!!Character
<table class="invisible-table">
<tbody>
<tr>
<td align="right" class="invisible-table" >
Lower case
</td>
<td align="left" class="invisible-table" >
<$edit-text tiddler="$:/0/new-character-button" field="lower"/>
</td>
</tr>
<tr>
<td align="right" class="invisible-table">
Upper case
</td>
<td align="left" class="invisible-table" >
<$edit-text tiddler="$:/0/new-character-button" field="upper"/>
</td>
</tr>
<tr>
<td align="left" class="invisible-table" colspan="2" >
{{$:/0/new-character-button}}
</td>
</tr>
</tbody>
</table>
!!Term
<table class="invisible-table">
<tbody>
<tr>
<td align="right" class="invisible-table" >
Term
</td>
<td align="left" class="invisible-table">
<$edit-text tiddler="$:/0/new-word-button" field="term"/>
</td>
</tr>
<tr>
<td align="right" class="invisible-table">
Gloss
</td>
<td align="left" class="invisible-table">
<$edit-text tiddler="$:/0/new-word-button" field="gloss"/>
</td>
</tr>
<tr>
<td align="right" class="invisible-table">
Category
</td>
<td align="left" class="invisible-table">
<$select tiddler="$:/0/new-word-button" field="category" class="sidebar-select">
<option value="SC00">
None
</option>
<$list filter="[tag[Semantic categories]sort[title]]">
<option value={{!!category}}>
<$view field='title'/>
</option>
</$list>
</$select>
</td>
</tr>
<tr>
<td align="right" class="invisible-table">
Status
</td>
<td align="left" class="invisible-table">
<$select tiddler="$:/0/new-word-button" field="status" class="sidebar-select">
<option value="TS00">
None
</option>
<$list filter="[tag[Term status]sort[title]]">
<option value={{!!status}}>
<$view field='title'/>
</option>
</$list>
</$select>
</td>
</tr>
<tr>
<td align="left" class="invisible-table" colspan="2" >
{{$:/0/new-word-button}}
</td>
</tr>
</tbody>
</table>
//For some reason I cannot yet detect, the status tag is not being added into the new term, so needs to be added manually, once the term has been created. Just select the next 'tag name' box at the top, beside the SC tag which does get transferred automatically, and type TS and a list of the 5 items will appear - choose the appropriate one.//
!!Category
<table class="invisible-table">
<tbody>
<tr>
<td align="right" class="invisible-table" >
Name
</td>
<td align="left" class="invisible-table" >
<$edit-text tiddler="$:/0/new-category-button" field="categorytitle"/>
</td>
</tr>
<tr>
<td align="right" class="invisible-table">
Code
</td>
<td align="left" class="invisible-table" >
<$edit-text tiddler="$:/0/new-category-button" field="category"/>
</td>
</tr>
<tr>
<td align="left" class="invisible-table" colspan="2" >
{{$:/0/new-category-button}}
</td>
</tr>
</tbody>
</table>
!!Status
<table class="invisible-table">
<tbody>
<tr>
<td align="right" class="invisible-table" >
Name
</td>
<td align="left" class="invisible-table" >
<$edit-text tiddler="$:/0/new-status-button" field="statustitle"/>
</td>
</tr>
<tr>
<td align="right" class="invisible-table">
Code
</td>
<td align="left" class="invisible-table" >
<$edit-text tiddler="$:/0/new-status-button" field="status"/>
</td>
</tr>
<tr>
<td align="left" class="invisible-table" colspan="2" >
{{$:/0/new-status-button}}
</td>
</tr>
</tbody>
</table>
<div class="tc-table-of-contents">
<<toc-selective-expandable 'Index'>>
</div>
\define list-word-gloss(filter,)
<$list filter="$filter$">
<$link to={{!!title}}>
<$transclude field="caption">
<span style="font-weight:bold;">
<$view field="title"/>
</span> 
<span style="">
<$view field="gloss"/>
</span>
</$transclude>
</$link>
<br/>
</$list>
\end
<$set name="tag1" value="[[Semantic categories]]">
<$set name="category" value={{!!category}}>
<$newtiddler $tm-navigate title={{!!categorytitle}} class="sidebar-button" edit="yes" skeleton="$:/0/new-category-template">
{{$:/core/images/new-button}} Add category
</$newtiddler>
</$set>
</$set>
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
<$set name="tag1" value="[[Alphabetical order]]">
<$set name="lower" value={{!!lower}}>
<$set name="upper" value={{!!upper}}>
<$newtiddler $tm-navigate
title={{!!upper}}
class="sidebar-button"
edit="yes"
skeleton="$:/0/new-character-template">
{{$:/core/images/new-button}} Add character
</$newtiddler>
</$set>
</$set>
</$set>
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
<$set name="tag2" value="[[Term status]]">
<$set name="status" value={{!!status}}>
<$newtiddler $tm-navigate
title={{!!statustitle}} class="sidebar-button" edit="yes" skeleton="$:/0/new-status-template">
{{$:/core/images/new-button}} Add status
</$newtiddler>
</$set>
</$set>
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!status}]">>
<$set name="gloss" value={{!!gloss}} >
<$set name="tag1" value={{!!category}} >
<$set name="tag2" value={{!!status}} >
<$newtiddler $tm-navigate
title={{!!term}}
class="sidebar-button"
edit="yes"
skeleton="$:/0/new-word-template">
{{$:/core/images/new-button}} Add term
</$newtiddler>
</$set>
</$set>
</$set>
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' $(gloss)$.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
.sidebar-button {
display: inline-block;
padding: 4px 8px;
margin: 8px 0px;
background: #e0e0e0;
border: 1px solid #cccccc;
border-radius: 2px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
text-decoration: none;
}
.sidebar-select {
color: #333333 !important;
}
.invisible-table, tr, td {
border: none;
border-collapse: separate;
border-spacing: 4px;
}
.example {
font-style: italic;
color: gray;
}
{
"tiddlers": {
"$:/Acknowledgements": {
"title": "$:/Acknowledgements",
"type": "text/vnd.tiddlywiki",
"text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
},
"$:/core/copyright.txt": {
"title": "$:/core/copyright.txt",
"type": "text/plain",
"text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright © Jeremy Ruston 2004-2007\nCopyright © UnaMesa Association 2007-2014\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this\nlist of conditions and the following disclaimer in the documentation and/or other\nmaterials provided with the distribution.\n\nNeither the name of the UnaMesa Association nor the names of its contributors may be\nused to endorse or promote products derived from this software without specific\nprior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n"
},
"$:/core/icon": {
"title": "$:/core/icon",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
},
"$:/core/images/advanced-search-button": {
"title": "$:/core/images/advanced-search-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-advanced-search-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M74.5651535,87.9848361 C66.9581537,93.0488876 57.8237115,96 48,96 C21.490332,96 0,74.509668 0,48 C0,21.490332 21.490332,0 48,0 C74.509668,0 96,21.490332 96,48 C96,57.8541369 93.0305793,67.0147285 87.9377231,74.6357895 L122.284919,108.982985 C125.978897,112.676963 125.973757,118.65366 122.284271,122.343146 C118.593975,126.033442 112.613238,126.032921 108.92411,122.343793 L74.5651535,87.9848361 Z M48,80 C65.673112,80 80,65.673112 80,48 C80,30.326888 65.673112,16 48,16 C30.326888,16 16,30.326888 16,48 C16,65.673112 30.326888,80 48,80 Z\"></path>\n <circle cx=\"48\" cy=\"48\" r=\"8\"></circle>\n <circle cx=\"28\" cy=\"48\" r=\"8\"></circle>\n <circle cx=\"68\" cy=\"48\" r=\"8\"></circle>\n </g>\n</svg>"
},
"$:/core/images/blank": {
"title": "$:/core/images/blank",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\"></svg>"
},
"$:/core/images/cancel-button": {
"title": "$:/core/images/cancel-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n\t<g fill-rule=\"evenodd\">\n\t <path d=\"M64,76.3137085 L47.0294734,93.2842351 C43.9038742,96.4098343 38.8399231,96.4084656 35.7157288,93.2842712 C32.5978915,90.166434 32.5915506,85.0947409 35.7157649,81.9705266 L52.6862915,65 L35.7157649,48.0294734 C32.5901657,44.9038742 32.5915344,39.8399231 35.7157288,36.7157288 C38.833566,33.5978915 43.9052591,33.5915506 47.0294734,36.7157649 L64,53.6862915 L80.9705266,36.7157649 C84.0961258,33.5901657 89.1600769,33.5915344 92.2842712,36.7157288 C95.4021085,39.833566 95.4084494,44.9052591 92.2842351,48.0294734 L75.3137085,65 L92.2842351,81.9705266 C95.4098343,85.0961258 95.4084656,90.1600769 92.2842712,93.2842712 C89.166434,96.4021085 84.0947409,96.4084494 80.9705266,93.2842351 L64,76.3137085 Z M64,129 C99.346224,129 128,100.346224 128,65 C128,29.653776 99.346224,1 64,1 C28.653776,1 1.13686838e-13,29.653776 1.13686838e-13,65 C1.13686838e-13,100.346224 28.653776,129 64,129 Z M64,113 C90.509668,113 112,91.509668 112,65 C112,38.490332 90.509668,17 64,17 C37.490332,17 16,38.490332 16,65 C16,91.509668 37.490332,113 64,113 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/chevron-down": {
"title": "$:/core/images/chevron-down",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-chevron-down tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 40.500000) rotate(-270.000000) translate(-64.000000, -40.500000) translate(-22.500000, -26.500000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>"
},
"$:/core/images/chevron-left": {
"title": "$:/core/images/chevron-left",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-chevron-left tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" version=\"1.1\">\n <g fill-rule=\"evenodd\" transform=\"translate(92.500000, 64.000000) rotate(-180.000000) translate(-92.500000, -64.000000) translate(6.000000, -3.000000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n </g>\n</svg>"
},
"$:/core/images/chevron-right": {
"title": "$:/core/images/chevron-right",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-chevron-right tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\" transform=\"translate(-48.000000, -3.000000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n </g>\n</svg>"
},
"$:/core/images/chevron-up": {
"title": "$:/core/images/chevron-up",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-chevron-up tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 89.500000) rotate(-90.000000) translate(-64.000000, -89.500000) translate(-22.500000, 22.500000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>"
},
"$:/core/images/clone-button": {
"title": "$:/core/images/clone-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-clone-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M32.2650915,96 L32.2650915,120.002359 C32.2650915,124.419334 35.8432884,128 40.2627323,128 L120.002359,128 C124.419334,128 128,124.421803 128,120.002359 L128,40.2627323 C128,35.8457573 124.421803,32.2650915 120.002359,32.2650915 L96,32.2650915 L96,48 L108.858899,48 C110.519357,48 111.853018,49.3405131 111.853018,50.9941198 L111.853018,108.858899 C111.853018,110.519357 110.512505,111.853018 108.858899,111.853018 L50.9941198,111.853018 C49.333661,111.853018 48,110.512505 48,108.858899 L48,96 L32.2650915,96 Z\"></path>\n <path d=\"M40,56 L32.0070969,56 C27.5881712,56 24,52.418278 24,48 C24,43.5907123 27.5848994,40 32.0070969,40 L40,40 L40,32.0070969 C40,27.5881712 43.581722,24 48,24 C52.4092877,24 56,27.5848994 56,32.0070969 L56,40 L63.9929031,40 C68.4118288,40 72,43.581722 72,48 C72,52.4092877 68.4151006,56 63.9929031,56 L56,56 L56,63.9929031 C56,68.4118288 52.418278,72 48,72 C43.5907123,72 40,68.4151006 40,63.9929031 L40,56 Z M7.9992458,0 C3.58138434,0 0,3.5881049 0,7.9992458 L0,88.0007542 C0,92.4186157 3.5881049,96 7.9992458,96 L88.0007542,96 C92.4186157,96 96,92.4118951 96,88.0007542 L96,7.9992458 C96,3.58138434 92.4118951,0 88.0007542,0 L7.9992458,0 Z M19.0010118,16 C17.3435988,16 16,17.336731 16,19.0010118 L16,76.9989882 C16,78.6564012 17.336731,80 19.0010118,80 L76.9989882,80 C78.6564012,80 80,78.663269 80,76.9989882 L80,19.0010118 C80,17.3435988 78.663269,16 76.9989882,16 L19.0010118,16 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/close-all-button": {
"title": "$:/core/images/close-all-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-close-all-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\" transform=\"translate(-23.000000, -23.000000)\">\n <path d=\"M43,131 L22.9976794,131 C18.5827987,131 15,127.418278 15,123 C15,118.590712 18.5806831,115 22.9976794,115 L43,115 L43,94.9976794 C43,90.5827987 46.581722,87 51,87 C55.4092877,87 59,90.5806831 59,94.9976794 L59,115 L79.0023206,115 C83.4172013,115 87,118.581722 87,123 C87,127.409288 83.4193169,131 79.0023206,131 L59,131 L59,151.002321 C59,155.417201 55.418278,159 51,159 C46.5907123,159 43,155.419317 43,151.002321 L43,131 Z\" transform=\"translate(51.000000, 123.000000) rotate(-45.000000) translate(-51.000000, -123.000000) \"></path>\n <path d=\"M43,59 L22.9976794,59 C18.5827987,59 15,55.418278 15,51 C15,46.5907123 18.5806831,43 22.9976794,43 L43,43 L43,22.9976794 C43,18.5827987 46.581722,15 51,15 C55.4092877,15 59,18.5806831 59,22.9976794 L59,43 L79.0023206,43 C83.4172013,43 87,46.581722 87,51 C87,55.4092877 83.4193169,59 79.0023206,59 L59,59 L59,79.0023206 C59,83.4172013 55.418278,87 51,87 C46.5907123,87 43,83.4193169 43,79.0023206 L43,59 Z\" transform=\"translate(51.000000, 51.000000) rotate(-45.000000) translate(-51.000000, -51.000000) \"></path>\n <path d=\"M115,59 L94.9976794,59 C90.5827987,59 87,55.418278 87,51 C87,46.5907123 90.5806831,43 94.9976794,43 L115,43 L115,22.9976794 C115,18.5827987 118.581722,15 123,15 C127.409288,15 131,18.5806831 131,22.9976794 L131,43 L151.002321,43 C155.417201,43 159,46.581722 159,51 C159,55.4092877 155.419317,59 151.002321,59 L131,59 L131,79.0023206 C131,83.4172013 127.418278,87 123,87 C118.590712,87 115,83.4193169 115,79.0023206 L115,59 Z\" transform=\"translate(123.000000, 51.000000) rotate(-45.000000) translate(-123.000000, -51.000000) \"></path>\n <path d=\"M115,131 L94.9976794,131 C90.5827987,131 87,127.418278 87,123 C87,118.590712 90.5806831,115 94.9976794,115 L115,115 L115,94.9976794 C115,90.5827987 118.581722,87 123,87 C127.409288,87 131,90.5806831 131,94.9976794 L131,115 L151.002321,115 C155.417201,115 159,118.581722 159,123 C159,127.409288 155.419317,131 151.002321,131 L131,131 L131,151.002321 C131,155.417201 127.418278,159 123,159 C118.590712,159 115,155.419317 115,151.002321 L115,131 Z\" transform=\"translate(123.000000, 123.000000) rotate(-45.000000) translate(-123.000000, -123.000000) \"></path>\n </g>\n</svg>"
},
"$:/core/images/close-button": {
"title": "$:/core/images/close-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M65.0864256,75.4091629 L14.9727349,125.522854 C11.8515951,128.643993 6.78104858,128.64922 3.65685425,125.525026 C0.539017023,122.407189 0.5336324,117.334539 3.65902635,114.209145 L53.7727171,64.0954544 L3.65902635,13.9817637 C0.537886594,10.8606239 0.532659916,5.79007744 3.65685425,2.6658831 C6.77469148,-0.451954124 11.8473409,-0.457338747 14.9727349,2.66805521 L65.0864256,52.7817459 L115.200116,2.66805521 C118.321256,-0.453084553 123.391803,-0.458311231 126.515997,2.6658831 C129.633834,5.78372033 129.639219,10.8563698 126.513825,13.9817637 L76.4001341,64.0954544 L126.513825,114.209145 C129.634965,117.330285 129.640191,122.400831 126.515997,125.525026 C123.39816,128.642863 118.32551,128.648248 115.200116,125.522854 L65.0864256,75.4091629 L65.0864256,75.4091629 Z\"></path>\n </g>\n</svg>\n"
},
"$:/core/images/close-others-button": {
"title": "$:/core/images/close-others-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-close-others-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z M64,96 C81.673112,96 96,81.673112 96,64 C96,46.326888 81.673112,32 64,32 C46.326888,32 32,46.326888 32,64 C32,81.673112 46.326888,96 64,96 Z M64,80 C72.836556,80 80,72.836556 80,64 C80,55.163444 72.836556,48 64,48 C55.163444,48 48,55.163444 48,64 C48,72.836556 55.163444,80 64,80 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/delete-button": {
"title": "$:/core/images/delete-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\" transform=\"translate(12.000000, 0.000000)\">\n <rect x=\"0\" y=\"11\" width=\"105\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"28\" y=\"0\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"8\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n <rect x=\"8\" y=\"112\" width=\"88\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"80\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n <rect x=\"56\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n <rect x=\"32\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n </g>\n</svg>"
},
"$:/core/images/done-button": {
"title": "$:/core/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M3.52445141,76.8322939 C2.07397484,75.3828178 1.17514421,73.3795385 1.17514421,71.1666288 L1.17514421,23.1836596 C1.17514421,18.7531992 4.75686621,15.1751442 9.17514421,15.1751442 C13.5844319,15.1751442 17.1751442,18.7606787 17.1751442,23.1836596 L17.1751442,63.1751442 L119.173716,63.1751442 C123.590457,63.1751442 127.175144,66.7568662 127.175144,71.1751442 C127.175144,75.5844319 123.592783,79.1751442 119.173716,79.1751442 L9.17657227,79.1751442 C6.96796403,79.1751442 4.9674142,78.279521 3.51911285,76.8315312 Z\" id=\"Rectangle-285\" transform=\"translate(64.175144, 47.175144) rotate(-45.000000) translate(-64.175144, -47.175144) \"></path>\n </g>\n</svg>"
},
"$:/core/images/down-arrow": {
"title": "$:/core/images/down-arrow",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <path d=\"M109.35638,81.3533152 C107.923899,82.7869182 105.94502,83.6751442 103.759224,83.6751442 L24.5910645,83.6751442 C20.225873,83.6751442 16.6751442,80.1307318 16.6751442,75.7584775 C16.6751442,71.3951199 20.2192225,67.8418109 24.5910645,67.8418109 L95.8418109,67.8418109 L95.8418109,-3.40893546 C95.8418109,-7.77412698 99.3862233,-11.3248558 103.758478,-11.3248558 C108.121835,-11.3248558 111.675144,-7.78077754 111.675144,-3.40893546 L111.675144,75.7592239 C111.675144,77.9416955 110.789142,79.9205745 109.356651,81.3538862 Z\" transform=\"translate(64.175144, 36.175144) rotate(45.000000) translate(-64.175144, -36.175144) \"></path>\n</svg>"
},
"$:/core/images/download-button": {
"title": "$:/core/images/download-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-download-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path class=\"tc-image-download-button-ring\" d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"/><path d=\"M34.3496823,66.4308767 L61.2415823,93.634668 C63.0411536,95.4551107 65.9588502,95.4551107 67.7584215,93.634668 L94.6503215,66.4308767 C96.4498928,64.610434 96.4498928,61.6588981 94.6503215,59.8384554 C93.7861334,58.9642445 92.6140473,58.4731195 91.3919019,58.4731195 L82.9324098,58.4731195 C80.3874318,58.4731195 78.3243078,56.3860674 78.3243078,53.8115729 L78.3243078,38.6615466 C78.3243078,36.0870521 76.2611837,34 73.7162058,34 L55.283798,34 C52.7388201,34 50.675696,36.0870521 50.675696,38.6615466 L50.675696,38.6615466 L50.675696,53.8115729 C50.675696,56.3860674 48.612572,58.4731195 46.0675941,58.4731195 L37.608102,58.4731195 C35.063124,58.4731195 33,60.5601716 33,63.134666 C33,64.3709859 33.4854943,65.5566658 34.3496823,66.4308767 L34.3496823,66.4308767 Z\"/></g></svg>"
},
"$:/core/images/edit-button": {
"title": "$:/core/images/edit-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M116.870058,45.3431458 L108.870058,45.3431458 L108.870058,45.3431458 L108.870058,61.3431458 L116.870058,61.3431458 L116.870058,45.3431458 Z M124.870058,45.3431458 L127.649881,45.3431458 C132.066101,45.3431458 135.656854,48.9248678 135.656854,53.3431458 C135.656854,57.7524334 132.07201,61.3431458 127.649881,61.3431458 L124.870058,61.3431458 L124.870058,45.3431458 Z M100.870058,45.3431458 L15.6638275,45.3431458 C15.5064377,45.3431458 15.3501085,45.3476943 15.1949638,45.3566664 L15.1949638,45.3566664 C15.0628002,45.3477039 14.928279,45.3431458 14.7913977,45.3431458 C6.68160973,45.3431458 -8.34314575,53.3431458 -8.34314575,53.3431458 C-8.34314575,53.3431458 6.85614548,61.3431458 14.7913977,61.3431458 C14.9266533,61.3431458 15.0596543,61.3384973 15.190398,61.3293588 C15.3470529,61.3385075 15.5049057,61.3431458 15.6638275,61.3431458 L100.870058,61.3431458 L100.870058,45.3431458 L100.870058,45.3431458 Z\" transform=\"translate(63.656854, 53.343146) rotate(-45.000000) translate(-63.656854, -53.343146) \"></path>\n <path d=\"M35.1714596,124.189544 C41.9594858,123.613403 49.068777,121.917633 58.85987,118.842282 C60.6854386,118.268877 62.4306907,117.705515 65.1957709,116.802278 C81.1962861,111.575575 87.0734839,109.994907 93.9414474,109.655721 C102.29855,109.242993 107.795169,111.785371 111.520478,118.355045 C112.610163,120.276732 115.051363,120.951203 116.97305,119.861518 C118.894737,118.771832 119.569207,116.330633 118.479522,114.408946 C113.146151,105.003414 104.734907,101.112919 93.5468356,101.66546 C85.6716631,102.054388 79.4899908,103.716944 62.7116783,109.197722 C59.9734132,110.092199 58.2519873,110.64787 56.4625698,111.20992 C37.002649,117.322218 25.6914684,118.282267 16.8654804,112.957098 C14.9739614,111.815848 12.5154166,112.424061 11.3741667,114.31558 C10.2329168,116.207099 10.84113,118.665644 12.7326489,119.806894 C19.0655164,123.627836 26.4866335,124.926678 35.1714596,124.189544 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/export-button": {
"title": "$:/core/images/export-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-export-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00348646,127.999999 C8.00464867,128 8.00581094,128 8.00697327,128 L119.993027,128 C122.205254,128 124.207939,127.101378 125.657096,125.651198 L125.656838,125.65759 C127.104563,124.210109 128,122.21009 128,119.999949 L128,56.0000511 C128,51.5817449 124.409288,48 120,48 C115.581722,48 112,51.5797863 112,56.0000511 L112,112 L16,112 L16,56.0000511 C16,51.5817449 12.4092877,48 8,48 C3.581722,48 7.10542736e-15,51.5797863 7.10542736e-15,56.0000511 L7.10542736e-15,119.999949 C7.10542736e-15,124.418255 3.59071231,128 8,128 C8.00116233,128 8.0023246,128 8.00348681,127.999999 Z M56.6235633,27.3113724 L47.6580188,36.2769169 C44.5333664,39.4015692 39.4634864,39.4061295 36.339292,36.2819351 C33.2214548,33.1640979 33.2173444,28.0901742 36.3443103,24.9632084 L58.9616908,2.34582788 C60.5248533,0.782665335 62.5748436,0.000361191261 64.624516,2.38225238e-14 L64.6193616,0.00151809229 C66.6695374,0.000796251595 68.7211167,0.781508799 70.2854358,2.34582788 L92.9028163,24.9632084 C96.0274686,28.0878607 96.0320289,33.1577408 92.9078345,36.2819351 C89.7899973,39.3997724 84.7160736,39.4038827 81.5891078,36.2769169 L72.6235633,27.3113724 L72.6235633,88.5669606 C72.6235633,92.9781015 69.0418413,96.5662064 64.6235633,96.5662064 C60.2142756,96.5662064 56.6235633,92.984822 56.6235633,88.5669606 L56.6235633,27.3113724 L56.6235633,27.3113724 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/full-screen-button": {
"title": "$:/core/images/full-screen-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-full-screen-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g>\n <g>\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n <g transform=\"translate(104.000000, 104.000000) rotate(-180.000000) translate(-104.000000, -104.000000) translate(80.000000, 80.000000)\">\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n <g transform=\"translate(24.000000, 104.000000) rotate(-90.000000) translate(-24.000000, -104.000000) translate(0.000000, 80.000000)\">\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n <g transform=\"translate(104.000000, 24.000000) rotate(90.000000) translate(-104.000000, -24.000000) translate(80.000000, 0.000000)\">\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n </g>\n</svg>"
},
"$:/core/images/github": {
"title": "$:/core/images/github",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-github tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M63.9383506,1.60695328 C28.6017227,1.60695328 -0.055756057,30.2970814 -0.055756057,65.6906208 C-0.055756057,94.003092 18.2804728,118.019715 43.7123154,126.493393 C46.9143781,127.083482 48.0812647,125.104717 48.0812647,123.405261 C48.0812647,121.886765 48.02626,117.85449 47.9948287,112.508284 C30.1929317,116.379268 26.4368926,103.916587 26.4368926,103.916587 C23.5255693,96.5129372 19.3294921,94.5420399 19.3294921,94.5420399 C13.5186324,90.5687739 19.7695302,90.6474524 19.7695302,90.6474524 C26.1933001,91.099854 29.5721638,97.2525155 29.5721638,97.2525155 C35.2808718,107.044059 44.5531024,104.215566 48.1991321,102.575118 C48.7806109,98.4366275 50.4346826,95.612068 52.2616263,94.0109598 C38.0507543,92.3941159 23.1091047,86.8944862 23.1091047,62.3389152 C23.1091047,55.3443933 25.6039634,49.6205298 29.6978889,45.1437211 C29.0378318,43.5229433 26.8415704,37.0044266 30.3265147,28.1845627 C30.3265147,28.1845627 35.6973364,26.4615028 47.9241083,34.7542205 C53.027764,33.330139 58.5046663,32.6220321 63.9462084,32.5944947 C69.3838216,32.6220321 74.856795,33.330139 79.9683085,34.7542205 C92.1872225,26.4615028 97.5501864,28.1845627 97.5501864,28.1845627 C101.042989,37.0044266 98.8467271,43.5229433 98.190599,45.1437211 C102.292382,49.6205298 104.767596,55.3443933 104.767596,62.3389152 C104.767596,86.9574291 89.8023734,92.3744463 75.5482834,93.9598188 C77.8427675,95.9385839 79.8897303,99.8489072 79.8897303,105.828476 C79.8897303,114.392635 79.8111521,121.304544 79.8111521,123.405261 C79.8111521,125.120453 80.966252,127.114954 84.2115327,126.489459 C109.623731,117.996111 127.944244,93.9952241 127.944244,65.6906208 C127.944244,30.2970814 99.2867652,1.60695328 63.9383506,1.60695328\"></path>\n </g>\n </svg>\n"
},
"$:/core/images/globe": {
"title": "$:/core/images/globe",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-globe tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M72.8111354,37.1275855 C72.8111354,37.9789875 72.8111354,38.8303894 72.8111354,39.6817913 C72.8111354,41.8784743 73.7885604,46.5631866 72.8111354,48.5143758 C71.3445471,51.4420595 68.1617327,52.0543531 66.4170946,54.3812641 C65.2352215,55.9575873 61.7987417,64.9821523 62.7262858,67.3005778 C66.6959269,77.2228204 74.26087,70.4881886 80.6887657,76.594328 C81.5527211,77.415037 83.5758191,78.8666631 83.985137,79.8899578 C87.2742852,88.1128283 76.4086873,94.8989524 87.7419325,106.189751 C88.9872885,107.430443 91.555495,102.372895 91.8205061,101.575869 C92.6726866,99.0129203 98.5458765,96.1267309 100.908882,94.5234439 C102.928056,93.1534443 105.782168,91.8557166 107.236936,89.7775886 C109.507391,86.5342557 108.717505,82.2640435 110.334606,79.0328716 C112.473794,74.7585014 114.163418,69.3979002 116.332726,65.0674086 C120.230862,57.2857361 121.054075,67.1596684 121.400359,67.5059523 C121.757734,67.8633269 122.411167,67.5059523 122.916571,67.5059523 C123.011132,67.5059523 124.364019,67.6048489 124.432783,67.5059523 C125.0832,66.5705216 123.390209,49.5852316 123.114531,48.2089091 C121.710578,41.1996597 116.17083,32.4278331 111.249523,27.7092761 C104.975994,21.6942076 104.160516,11.5121686 92.9912146,12.7547535 C92.7872931,12.7774397 87.906794,22.9027026 85.2136766,26.2672064 C81.486311,30.9237934 82.7434931,22.1144904 78.6876623,22.1144904 C78.6065806,22.1144904 77.5045497,22.0107615 77.4353971,22.1144904 C76.8488637,22.9942905 75.9952305,26.0101404 75.1288269,26.5311533 C74.8635477,26.6906793 73.4071369,26.2924966 73.2826811,26.5311533 C71.0401728,30.8313939 81.5394677,28.7427264 79.075427,34.482926 C76.7225098,39.9642538 72.747373,32.4860199 72.747373,43.0434079\"></path>\n <path d=\"M44.4668556,7.01044608 C54.151517,13.1403033 45.1489715,19.2084878 47.1611905,23.2253896 C48.8157833,26.5283781 51.4021933,28.6198851 48.8753629,33.038878 C46.8123257,36.6467763 42.0052989,37.0050492 39.251679,39.7621111 C36.2115749,42.8060154 33.7884281,48.7028116 32.4624592,52.6732691 C30.8452419,57.5158356 47.0088721,59.5388126 44.5246867,63.6811917 C43.1386839,65.9923513 37.7785192,65.1466282 36.0880227,63.8791519 C34.9234453,63.0059918 32.4946425,63.3331166 31.6713597,62.0997342 C29.0575851,58.1839669 29.4107339,54.0758543 28.0457962,49.9707786 C27.1076833,47.1493864 21.732611,47.8501656 20.2022714,49.3776393 C19.6790362,49.8998948 19.8723378,51.1703278 19.8723378,51.8829111 C19.8723378,57.1682405 26.9914913,55.1986414 26.9914913,58.3421973 C26.9914913,72.9792302 30.9191897,64.8771867 38.1313873,69.6793121 C48.1678018,76.3618966 45.9763926,76.981595 53.0777543,84.0829567 C56.7511941,87.7563965 60.8192437,87.7689005 62.503478,93.3767069 C64.1046972,98.7081071 53.1759798,98.7157031 50.786754,100.825053 C49.663965,101.816317 47.9736094,104.970571 46.5680513,105.439676 C44.7757187,106.037867 43.334221,105.93607 41.6242359,107.219093 C39.1967302,109.040481 37.7241465,112.151588 37.6034934,112.030935 C35.4555278,109.88297 34.0848666,96.5511248 33.7147244,93.7726273 C33.1258872,89.3524817 28.1241923,88.2337027 26.7275443,84.7420826 C25.1572737,80.8164061 28.2518481,75.223612 25.599097,70.9819941 C19.0797019,60.557804 13.7775712,56.4811506 10.2493953,44.6896152 C9.3074899,41.5416683 13.5912267,38.1609942 15.1264825,35.8570308 C17.0029359,33.0410312 17.7876232,30.0028946 19.8723378,27.2224065 C22.146793,24.1888519 40.8551166,9.46076832 43.8574051,8.63490613 L44.4668556,7.01044608 Z\"></path>\n <path d=\"M64,126 C98.2416545,126 126,98.2416545 126,64 C126,29.7583455 98.2416545,2 64,2 C29.7583455,2 2,29.7583455 2,64 C2,98.2416545 29.7583455,126 64,126 Z M64,120 C94.927946,120 120,94.927946 120,64 C120,33.072054 94.927946,8 64,8 C33.072054,8 8,33.072054 8,64 C8,94.927946 33.072054,120 64,120 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/help": {
"title": "$:/core/images/help",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-help tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M36.0548906,111.44117 C30.8157418,115.837088 20.8865444,118.803477 9.5,118.803477 C7.86465619,118.803477 6.25937294,118.742289 4.69372699,118.624467 C12.612543,115.984876 18.7559465,110.02454 21.0611049,102.609942 C8.74739781,92.845129 1.04940554,78.9359851 1.04940554,63.5 C1.04940554,33.9527659 29.2554663,10 64.0494055,10 C98.8433448,10 127.049406,33.9527659 127.049406,63.5 C127.049406,93.0472341 98.8433448,117 64.0494055,117 C53.9936953,117 44.48824,114.999337 36.0548906,111.44117 L36.0548906,111.44117 Z M71.4042554,77.5980086 C71.406883,77.2865764 71.4095079,76.9382011 71.4119569,76.5610548 C71.4199751,75.3262169 71.4242825,74.0811293 71.422912,72.9158546 C71.4215244,71.736154 71.4143321,70.709635 71.4001396,69.8743525 C71.4078362,68.5173028 71.9951951,67.7870427 75.1273009,65.6385471 C75.2388969,65.5619968 76.2124091,64.8981068 76.5126553,64.6910879 C79.6062455,62.5580654 81.5345849,60.9050204 83.2750652,58.5038955 C85.6146327,55.2762841 86.8327108,51.426982 86.8327108,46.8554323 C86.8327108,33.5625756 76.972994,24.9029551 65.3778484,24.9029551 C54.2752771,24.9029551 42.8794554,34.5115163 41.3121702,47.1975534 C40.9043016,50.4989536 43.2499725,53.50591 46.5513726,53.9137786 C49.8527728,54.3216471 52.8597292,51.9759763 53.2675978,48.6745761 C54.0739246,42.1479456 60.2395837,36.9492759 65.3778484,36.9492759 C70.6427674,36.9492759 74.78639,40.5885487 74.78639,46.8554323 C74.78639,50.4892974 73.6853224,52.008304 69.6746221,54.7736715 C69.4052605,54.9593956 68.448509,55.6118556 68.3131127,55.7047319 C65.6309785,57.5445655 64.0858213,58.803255 62.6123358,60.6352315 C60.5044618,63.2559399 59.3714208,66.3518252 59.3547527,69.9487679 C59.3684999,70.8407274 59.3752803,71.8084521 59.3765995,72.9300232 C59.3779294,74.0607297 59.3737237,75.2764258 59.36589,76.482835 C59.3634936,76.8518793 59.3609272,77.1924914 59.3583633,77.4963784 C59.3568319,77.6778944 59.3556368,77.8074256 59.3549845,77.8730928 C59.3219814,81.1994287 61.9917551,83.9227111 65.318091,83.9557142 C68.644427,83.9887173 71.3677093,81.3189435 71.4007124,77.9926076 C71.4014444,77.9187458 71.402672,77.7856841 71.4042554,77.5980086 Z M65.3778489,102.097045 C69.5359735,102.097045 72.9067994,98.7262189 72.9067994,94.5680944 C72.9067994,90.4099698 69.5359735,87.0391439 65.3778489,87.0391439 C61.2197243,87.0391439 57.8488984,90.4099698 57.8488984,94.5680944 C57.8488984,98.7262189 61.2197243,102.097045 65.3778489,102.097045 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/home-button": {
"title": "$:/core/images/home-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M112.9847,119.501583 C112.99485,119.336814 113,119.170705 113,119.003406 L113,67.56802 C116.137461,70.5156358 121.076014,70.4518569 124.133985,67.3938855 C127.25818,64.2696912 127.260618,59.2068102 124.131541,56.0777326 L70.3963143,2.34250601 C68.8331348,0.779326498 66.7828947,-0.000743167069 64.7337457,1.61675364e-05 C62.691312,-0.00409949529 60.6426632,0.777559815 59.077717,2.34250601 L33,28.420223 L33,28.420223 L33,8.00697327 C33,3.58484404 29.4092877,0 25,0 C20.581722,0 17,3.59075293 17,8.00697327 L17,44.420223 L5.3424904,56.0777326 C2.21694607,59.2032769 2.22220878,64.2760483 5.34004601,67.3938855 C8.46424034,70.5180798 13.5271213,70.5205187 16.6561989,67.3914411 L17,67.04764 L17,119.993027 C17,119.994189 17.0000002,119.995351 17.0000007,119.996514 C17.0000002,119.997675 17,119.998838 17,120 C17,124.418278 20.5881049,128 24.9992458,128 L105.000754,128 C109.418616,128 113,124.409288 113,120 C113,119.832611 112.99485,119.666422 112.9847,119.501583 Z M97,112 L97,51.5736087 L97,51.5736087 L64.7370156,19.3106244 L33,51.04764 L33,112 L97,112 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/import-button": {
"title": "$:/core/images/import-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-import-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M105.449437,94.2138951 C105.449437,94.2138951 110.049457,94.1897106 110.049457,99.4026111 C110.049457,104.615512 105.163246,104.615511 105.163246,104.615511 L45.0075072,105.157833 C45.0075072,105.157833 0.367531803,106.289842 0.367532368,66.6449212 C0.367532934,27.0000003 45.0428249,27.0000003 45.0428249,27.0000003 L105.532495,27.0000003 C105.532495,27.0000003 138.996741,25.6734987 138.996741,55.1771866 C138.996741,84.6808745 105.727102,82.8457535 105.727102,82.8457535 L56.1735087,82.8457535 C56.1735087,82.8457535 22.6899229,85.1500223 22.6899229,66.0913753 C22.6899229,47.0327282 56.1735087,49.3383013 56.1735087,49.3383013 L105.727102,49.3383013 C105.727102,49.3383013 111.245209,49.3383024 111.245209,54.8231115 C111.245209,60.3079206 105.727102,60.5074524 105.727102,60.5074524 L56.1735087,60.5074524 C56.1735087,60.5074524 37.48913,60.5074528 37.48913,66.6449195 C37.48913,72.7823862 56.1735087,71.6766023 56.1735087,71.6766023 L105.727102,71.6766029 C105.727102,71.6766029 127.835546,73.1411469 127.835546,55.1771866 C127.835546,35.5304025 105.727102,38.3035317 105.727102,38.3035317 L45.0428249,38.3035317 C45.0428249,38.3035317 11.5287276,38.3035313 11.5287276,66.6449208 C11.5287276,94.9863103 45.0428244,93.9579678 45.0428244,93.9579678 L105.449437,94.2138951 Z\" transform=\"translate(69.367532, 66.000000) rotate(-45.000000) translate(-69.367532, -66.000000) \"></path>\n </g>\n</svg>"
},
"$:/core/images/info-button": {
"title": "$:/core/images/info-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <g transform=\"translate(0.049406, 0.000000)\">\n <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"></path>\n <circle cx=\"64\" cy=\"32\" r=\"8\"></circle>\n <rect x=\"56\" y=\"48\" width=\"16\" height=\"56\" rx=\"8\"></rect>\n </g>\n </g>\n </g>\n</svg>"
},
"$:/core/images/left-arrow": {
"created": "20150315234410875",
"modified": "20150315235324760",
"tags": "$:/tags/Image",
"title": "$:/core/images/left-arrow",
"text": "<svg class=\"tc-image-left-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <path transform=\"rotate(135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25075c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056z\"/>\n</svg>\n"
},
"$:/core/images/locked-padlock": {
"title": "$:/core/images/locked-padlock",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-locked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M96.4723753,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L32.0000269,64 C32.0028554,48.2766389 32.3030338,16.2688026 64.1594984,16.2688041 C95.9543927,16.2688056 96.4648869,48.325931 96.4723753,64 Z M80.5749059,64 L48.4413579,64 C48.4426205,47.71306 48.5829272,31.9999996 64.1595001,31.9999996 C79.8437473,31.9999996 81.1369461,48.1359182 80.5749059,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/mail": {
"title": "$:/core/images/mail",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-mail tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M122.826782,104.894066 C121.945525,105.22777 120.990324,105.41043 119.993027,105.41043 L8.00697327,105.41043 C7.19458381,105.41043 6.41045219,105.289614 5.67161357,105.064967 L5.67161357,105.064967 L39.8346483,70.9019325 L60.6765759,91.7438601 C61.6118278,92.679112 62.8865166,93.0560851 64.0946097,92.8783815 C65.2975108,93.0473238 66.5641085,92.6696979 67.4899463,91.7438601 L88.5941459,70.6396605 C88.6693095,70.7292352 88.7490098,70.8162939 88.8332479,70.9005321 L122.826782,104.894066 Z M127.903244,98.6568194 C127.966933,98.2506602 128,97.8343714 128,97.4103789 L128,33.410481 C128,32.7414504 127.917877,32.0916738 127.763157,31.4706493 L94.2292399,65.0045665 C94.3188145,65.0797417 94.4058701,65.1594458 94.4901021,65.2436778 L127.903244,98.6568194 Z M0.205060636,99.2178117 C0.0709009529,98.6370366 0,98.0320192 0,97.4103789 L0,33.410481 C0,32.694007 0.0944223363,31.9995312 0.27147538,31.3387595 L0.27147538,31.3387595 L34.1777941,65.2450783 L0.205060636,99.2178117 L0.205060636,99.2178117 Z M5.92934613,25.6829218 C6.59211333,25.5051988 7.28862283,25.4104299 8.00697327,25.4104299 L119.993027,25.4104299 C120.759109,25.4104299 121.500064,25.5178649 122.201605,25.7184927 L122.201605,25.7184927 L64.0832611,83.8368368 L5.92934613,25.6829218 L5.92934613,25.6829218 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/menu-button": {
"title": "$:/core/images/menu-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <rect x=\"0\" y=\"16\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"0\" y=\"56\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"0\" y=\"96\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n</svg>"
},
"$:/core/images/new-button": {
"title": "$:/core/images/new-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M56,72 L8.00697327,72 C3.59075293,72 0,68.418278 0,64 C0,59.5907123 3.58484404,56 8.00697327,56 L56,56 L56,8.00697327 C56,3.59075293 59.581722,0 64,0 C68.4092877,0 72,3.58484404 72,8.00697327 L72,56 L119.993027,56 C124.409247,56 128,59.581722 128,64 C128,68.4092877 124.415156,72 119.993027,72 L72,72 L72,119.993027 C72,124.409247 68.418278,128 64,128 C59.5907123,128 56,124.415156 56,119.993027 L56,72 L56,72 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/new-here-button": {
"title": "$:/core/images/new-here-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-new-here-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n \t<g transform=\"translate(52.233611, 64.389922) rotate(75.000000) translate(-52.233611, -64.389922) translate(-7.734417, 3.702450)\">\n\t <path d=\"M18.9270186,45.959338 L18.9080585,49.6521741 C18.8884833,53.4648378 21.0574548,58.7482162 23.7526408,61.4434022 L78.5671839,116.257945 C81.2617332,118.952495 85.6348701,118.950391 88.3334363,116.251825 L115.863237,88.7220241 C118.555265,86.0299959 118.564544,81.6509578 115.869358,78.9557717 L61.0548144,24.1412286 C58.3602652,21.4466794 53.0787224,19.2788426 49.2595808,19.3006519 L25.9781737,19.4336012 C22.1633003,19.4553862 19.0471195,22.5673232 19.0275223,26.3842526 L18.9871663,34.2443819 C19.0818862,34.255617 19.1779758,34.2665345 19.2754441,34.2771502 C22.6891275,34.6489512 27.0485594,34.2348566 31.513244,33.2285542 C31.7789418,32.8671684 32.075337,32.5211298 32.4024112,32.1940556 C34.8567584,29.7397084 38.3789778,29.0128681 41.4406288,30.0213822 C41.5958829,29.9543375 41.7503946,29.8866669 41.9041198,29.8183808 L42.1110981,30.2733467 C43.1114373,30.6972371 44.0473796,31.3160521 44.8614145,32.1300869 C48.2842088,35.5528813 48.2555691,41.130967 44.7974459,44.5890903 C41.4339531,47.952583 36.0649346,48.0717177 32.6241879,44.9262969 C27.8170558,45.8919233 23.0726921,46.2881596 18.9270186,45.959338 Z\"></path>\n\t <path d=\"M45.4903462,38.8768094 C36.7300141,42.6833154 26.099618,44.7997354 18.1909048,43.9383587 C7.2512621,42.7468685 1.50150083,35.8404432 4.66865776,24.7010202 C7.51507386,14.6896965 15.4908218,6.92103848 24.3842626,4.38423012 C34.1310219,1.60401701 42.4070208,6.15882777 42.4070209,16.3101169 L34.5379395,16.310117 C34.5379394,11.9285862 31.728784,10.3825286 26.5666962,11.8549876 C20.2597508,13.6540114 14.3453742,19.4148216 12.2444303,26.8041943 C10.4963869,32.9523565 12.6250796,35.5092726 19.0530263,36.2093718 C25.5557042,36.9176104 35.0513021,34.9907189 42.7038419,31.5913902 L42.7421786,31.6756595 C44.3874154,31.5384763 47.8846101,37.3706354 45.9274416,38.6772897 L45.9302799,38.6835285 C45.9166992,38.6895612 45.9031139,38.6955897 45.8895238,38.7016142 C45.8389288,38.7327898 45.7849056,38.7611034 45.7273406,38.7863919 C45.6506459,38.8200841 45.571574,38.8501593 45.4903462,38.8768094 Z\"></path>\n </g>\n <rect x=\"96\" y=\"80\" width=\"16\" height=\"48\" rx=\"8\"></rect>\n <rect x=\"80\" y=\"96\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n </g>\n </g>\n</svg>"
},
"$:/core/images/new-journal-button": {
"title": "$:/core/images/new-journal-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-new-journal-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M102.545455,112.818182 L102.545455,124.636364 L102.545455,124.636364 L102.545455,124.636364 C102.545455,125.941761 103.630828,127 104.969697,127 L111.030303,127 C112.369172,127 113.454545,125.941761 113.454545,124.636364 L113.454545,112.818182 L125.575758,112.818182 C126.914626,112.818182 128,111.759982 128,110.454545 L128,104.545455 C128,103.240018 126.914626,102.181818 125.575758,102.181818 L113.454545,102.181818 L113.454545,90.3636364 C113.454545,89.0582 112.369172,88 111.030303,88 L104.969697,88 L104.969697,88 C103.630828,88 102.545455,89.0582 102.545455,90.3636364 L102.545455,102.181818 L90.4242424,102.181818 L90.4242424,102.181818 C89.0853705,102.181818 88,103.240018 88,104.545455 L88,110.454545 L88,110.454545 L88,110.454545 C88,111.759982 89.0853705,112.818182 90.4242424,112.818182 L102.545455,112.818182 Z\"></path>\n <g transform=\"translate(59.816987, 64.316987) rotate(30.000000) translate(-59.816987, -64.316987) translate(20.316987, 12.816987)\">\n <g transform=\"translate(0.000000, 0.000000)\">\n <path d=\"M9.99631148,0 C4.4755011,0 -2.27373675e-13,4.48070044 -2.27373675e-13,9.99759461 L-2.27373675e-13,91.6128884 C-2.27373675e-13,97.1344074 4.46966773,101.610483 9.99631148,101.610483 L68.9318917,101.610483 C74.4527021,101.610483 78.9282032,97.1297826 78.9282032,91.6128884 L78.9282032,9.99759461 C78.9282032,4.47607557 74.4585355,0 68.9318917,0 L9.99631148,0 Z M20.8885263,26 C24.2022348,26 26.8885263,23.3137085 26.8885263,20 C26.8885263,16.6862915 24.2022348,14 20.8885263,14 C17.5748178,14 14.8885263,16.6862915 14.8885263,20 C14.8885263,23.3137085 17.5748178,26 20.8885263,26 Z M57.3033321,25.6783342 C60.6170406,25.6783342 63.3033321,22.9920427 63.3033321,19.6783342 C63.3033321,16.3646258 60.6170406,13.6783342 57.3033321,13.6783342 C53.9896236,13.6783342 51.3033321,16.3646258 51.3033321,19.6783342 C51.3033321,22.9920427 53.9896236,25.6783342 57.3033321,25.6783342 Z\"></path>\n <text font-family=\"Helvetica\" font-size=\"47.1724138\" font-weight=\"bold\" fill=\"#FFFFFF\">\n <tspan x=\"42\" y=\"77.4847912\" text-anchor=\"middle\"><<now \"DD\">></tspan>\n </text>\n </g>\n </g>\n </g>\n</svg>"
},
"$:/core/images/options-button": {
"title": "$:/core/images/options-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-options-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M110.48779,76.0002544 C109.354214,80.4045063 107.611262,84.5641217 105.354171,88.3838625 L105.354171,88.3838625 L112.07833,95.1080219 C115.20107,98.2307613 115.210098,103.299824 112.089164,106.420759 L106.420504,112.089418 C103.301049,115.208874 98.2346851,115.205502 95.1077675,112.078585 L88.3836082,105.354425 C84.5638673,107.611516 80.4042519,109.354468 76,110.488045 L76,110.488045 L76,119.993281 C76,124.409501 72.4220153,128.000254 68.0083475,128.000254 L59.9916525,128.000254 C55.5800761,128.000254 52,124.41541 52,119.993281 L52,110.488045 C47.5957481,109.354468 43.4361327,107.611516 39.6163918,105.354425 L32.8922325,112.078585 C29.7694931,115.201324 24.7004301,115.210353 21.5794957,112.089418 L15.9108363,106.420759 C12.7913807,103.301303 12.7947522,98.2349395 15.9216697,95.1080219 L22.6458291,88.3838625 C20.3887383,84.5641217 18.6457859,80.4045063 17.5122098,76.0002544 L8.00697327,76.0002544 C3.59075293,76.0002544 2.19088375e-16,72.4222697 4.89347582e-16,68.0086019 L9.80228577e-16,59.9919069 C1.25035972e-15,55.5803305 3.58484404,52.0002544 8.00697327,52.0002544 L17.5122098,52.0002544 C18.6457859,47.5960025 20.3887383,43.4363871 22.6458291,39.6166462 L15.9216697,32.8924868 C12.7989304,29.7697475 12.7899019,24.7006845 15.9108363,21.5797501 L21.5794957,15.9110907 C24.6989513,12.7916351 29.7653149,12.7950065 32.8922325,15.9219241 L39.6163918,22.6460835 C43.4361327,20.3889927 47.5957481,18.6460403 52,17.5124642 L52,8.00722764 C52,3.5910073 55.5779847,0.000254375069 59.9916525,0.000254375069 L68.0083475,0.000254375069 C72.4199239,0.000254375069 76,3.58509841 76,8.00722764 L76,17.5124642 C80.4042519,18.6460403 84.5638673,20.3889927 88.3836082,22.6460835 L95.1077675,15.9219241 C98.2305069,12.7991848 103.29957,12.7901562 106.420504,15.9110907 L112.089164,21.5797501 C115.208619,24.6992057 115.205248,29.7655693 112.07833,32.8924868 L105.354171,39.6166462 L105.354171,39.6166462 C107.611262,43.4363871 109.354214,47.5960025 110.48779,52.0002544 L119.993027,52.0002544 C124.409247,52.0002544 128,55.5782391 128,59.9919069 L128,68.0086019 C128,72.4201783 124.415156,76.0002544 119.993027,76.0002544 L110.48779,76.0002544 L110.48779,76.0002544 Z M64,96.0002544 C81.673112,96.0002544 96,81.6733664 96,64.0002544 C96,46.3271424 81.673112,32.0002544 64,32.0002544 C46.326888,32.0002544 32,46.3271424 32,64.0002544 C32,81.6733664 46.326888,96.0002544 64,96.0002544 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/permalink-button": {
"title": "$:/core/images/permalink-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-permalink-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M80.4834582,48 L73.0956761,80 L73.0956761,80 L47.5165418,80 L54.9043239,48 L80.4834582,48 Z M84.1773493,32 L89.8007299,7.64246248 C90.7941633,3.33942958 95.0918297,0.64641956 99.3968675,1.64031585 C103.693145,2.63218977 106.385414,6.93288901 105.390651,11.2416793 L100.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L96.9043239,48 L89.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L85.8226507,96 L80.1992701,120.357538 C79.2058367,124.66057 74.9081703,127.35358 70.6031325,126.359684 C66.3068546,125.36781 63.6145865,121.067111 64.6093491,116.758321 L69.401785,96 L43.8226507,96 L38.1992701,120.357538 C37.2058367,124.66057 32.9081703,127.35358 28.6031325,126.359684 C24.3068546,125.36781 21.6145865,121.067111 22.6093491,116.758321 L27.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L31.0956761,80 L38.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L42.1773493,32 L47.8007299,7.64246248 C48.7941633,3.33942958 53.0918297,0.64641956 57.3968675,1.64031585 C61.6931454,2.63218977 64.3854135,6.93288901 63.3906509,11.2416793 L58.598215,32 L84.1773493,32 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/permaview-button": {
"title": "$:/core/images/permaview-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-permaview-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M81.4834582,48 L79.6365127,56 L79.6365127,56 L74.0573784,56 L75.9043239,48 L81.4834582,48 Z M85.1773493,32 L90.8007299,7.64246248 C91.7941633,3.33942958 96.0918297,0.64641956 100.396867,1.64031585 C104.693145,2.63218977 107.385414,6.93288901 106.390651,11.2416793 L101.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L97.9043239,48 L96.0573784,56 L104.000754,56 C108.411895,56 112,59.581722 112,64 C112,68.4092877 108.418616,72 104.000754,72 L92.3634873,72 L90.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L86.8226507,96 L81.1992701,120.357538 C80.2058367,124.66057 75.9081703,127.35358 71.6031325,126.359684 C67.3068546,125.36781 64.6145865,121.067111 65.6093491,116.758321 L70.401785,96 L64.8226507,96 L59.1992701,120.357538 C58.2058367,124.66057 53.9081703,127.35358 49.6031325,126.359684 C45.3068546,125.36781 42.6145865,121.067111 43.6093491,116.758321 L48.401785,96 L42.8226507,96 L37.1992701,120.357538 C36.2058367,124.66057 31.9081703,127.35358 27.6031325,126.359684 C23.3068546,125.36781 20.6145865,121.067111 21.6093491,116.758321 L26.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L30.0956761,80 L31.9426216,72 L23.9992458,72 C19.5881049,72 16,68.418278 16,64 C16,59.5907123 19.5813843,56 23.9992458,56 L35.6365127,56 L37.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L41.1773493,32 L46.8007299,7.64246248 C47.7941633,3.33942958 52.0918297,0.64641956 56.3968675,1.64031585 C60.6931454,2.63218977 63.3854135,6.93288901 62.3906509,11.2416793 L57.598215,32 L63.1773493,32 L68.8007299,7.64246248 C69.7941633,3.33942958 74.0918297,0.64641956 78.3968675,1.64031585 C82.6931454,2.63218977 85.3854135,6.93288901 84.3906509,11.2416793 L79.598215,32 L85.1773493,32 Z M53.9043239,48 L52.0573784,56 L57.6365127,56 L59.4834582,48 L53.9043239,48 Z M75.9426216,72 L74.0956761,80 L74.0956761,80 L68.5165418,80 L70.3634873,72 L75.9426216,72 L75.9426216,72 Z M48.3634873,72 L46.5165418,80 L52.0956761,80 L53.9426216,72 L48.3634873,72 L48.3634873,72 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/plugin-generic-language": {
"title": "$:/core/images/plugin-generic-language",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M61.2072232,68.1369825 C56.8829239,70.9319564 54.2082892,74.793177 54.2082892,79.0581634 C54.2082892,86.9638335 63.3980995,93.4821994 75.2498076,94.3940006 C77.412197,98.2964184 83.8475284,101.178858 91.5684735,101.403106 C86.4420125,100.27851 82.4506393,97.6624107 80.9477167,94.3948272 C92.8046245,93.4861461 102,86.9662269 102,79.0581634 C102,70.5281905 91.3014611,63.6132813 78.1041446,63.6132813 C71.5054863,63.6132813 65.5315225,65.3420086 61.2072232,68.1369825 Z M74.001066,53.9793443 C69.6767667,56.7743182 63.7028029,58.5030456 57.1041446,58.5030456 C54.4851745,58.5030456 51.9646095,58.2307276 49.6065315,57.7275105 C46.2945155,59.9778212 41.2235699,61.4171743 35.5395922,61.4171743 C35.4545771,61.4171743 35.3696991,61.4168523 35.2849622,61.4162104 C39.404008,60.5235193 42.7961717,58.6691298 44.7630507,56.286533 C37.8379411,53.5817651 33.2082892,48.669413 33.2082892,43.0581634 C33.2082892,34.5281905 43.9068281,27.6132812 57.1041446,27.6132812 C70.3014611,27.6132812 81,34.5281905 81,43.0581634 C81,47.3231498 78.3253653,51.1843704 74.001066,53.9793443 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/plugin-generic-plugin": {
"title": "$:/core/images/plugin-generic-plugin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M40.3972881,76.4456988 L40.3972881,95.3404069 L54.5170166,95.3404069 L54.5170166,95.3404069 C54.5165526,95.3385183 54.516089,95.3366295 54.515626,95.3347404 C54.6093153,95.3385061 54.7034848,95.3404069 54.7980982,95.3404069 C58.6157051,95.3404069 61.710487,92.245625 61.710487,88.4280181 C61.710487,86.6197822 61.01617,84.9737128 59.8795929,83.7418666 L59.8795929,83.7418666 C59.8949905,83.7341665 59.9104102,83.7265043 59.925852,83.7188798 C58.8840576,82.5086663 58.2542926,80.9336277 58.2542926,79.2114996 C58.2542926,75.3938927 61.3490745,72.2991108 65.1666814,72.2991108 C68.9842884,72.2991108 72.0790703,75.3938927 72.0790703,79.2114996 C72.0790703,81.1954221 71.2432806,82.9841354 69.9045961,84.2447446 L69.9045961,84.2447446 C69.9333407,84.2629251 69.9619885,84.281245 69.9905383,84.2997032 L69.9905383,84.2997032 C69.1314315,85.4516923 68.6228758,86.8804654 68.6228758,88.4280181 C68.6228758,91.8584969 71.1218232,94.7053153 74.3986526,95.2474079 C74.3913315,95.2784624 74.3838688,95.3094624 74.3762652,95.3404069 L95.6963988,95.3404069 L95.6963988,75.5678578 L95.6963988,75.5678578 C95.6466539,75.5808558 95.5967614,75.5934886 95.5467242,75.6057531 C95.5504899,75.5120637 95.5523907,75.4178943 95.5523907,75.3232809 C95.5523907,71.505674 92.4576088,68.4108921 88.6400019,68.4108921 C86.831766,68.4108921 85.1856966,69.105209 83.9538504,70.2417862 L83.9538504,70.2417862 C83.9461503,70.2263886 83.938488,70.2109688 83.9308636,70.1955271 C82.7206501,71.2373215 81.1456115,71.8670865 79.4234834,71.8670865 C75.6058765,71.8670865 72.5110946,68.7723046 72.5110946,64.9546976 C72.5110946,61.1370907 75.6058765,58.0423088 79.4234834,58.0423088 C81.4074059,58.0423088 83.1961192,58.8780985 84.4567284,60.2167829 L84.4567284,60.2167829 C84.4749089,60.1880383 84.4932288,60.1593906 84.511687,60.1308407 L84.511687,60.1308407 C85.6636761,60.9899475 87.0924492,61.4985032 88.6400019,61.4985032 C92.0704807,61.4985032 94.9172991,58.9995558 95.4593917,55.7227265 C95.538755,55.7414363 95.6177614,55.761071 95.6963988,55.7816184 L95.6963988,40.0412962 L74.3762652,40.0412962 L74.3762652,40.0412962 C74.3838688,40.0103516 74.3913315,39.9793517 74.3986526,39.9482971 L74.3986526,39.9482971 C71.1218232,39.4062046 68.6228758,36.5593862 68.6228758,33.1289073 C68.6228758,31.5813547 69.1314315,30.1525815 69.9905383,29.0005925 C69.9619885,28.9821342 69.9333407,28.9638143 69.9045961,28.9456339 C71.2432806,27.6850247 72.0790703,25.8963113 72.0790703,23.9123888 C72.0790703,20.0947819 68.9842884,17 65.1666814,17 C61.3490745,17 58.2542926,20.0947819 58.2542926,23.9123888 C58.2542926,25.6345169 58.8840576,27.2095556 59.925852,28.419769 L59.925852,28.419769 C59.9104102,28.4273935 59.8949905,28.4350558 59.8795929,28.4427558 C61.01617,29.674602 61.710487,31.3206715 61.710487,33.1289073 C61.710487,36.9465143 58.6157051,40.0412962 54.7980982,40.0412962 C54.7034848,40.0412962 54.6093153,40.0393953 54.515626,40.0356296 L54.515626,40.0356296 C54.516089,40.0375187 54.5165526,40.0394075 54.5170166,40.0412962 L40.3972881,40.0412962 L40.3972881,52.887664 L40.3972881,52.887664 C40.4916889,53.3430132 40.5412962,53.8147625 40.5412962,54.2980982 C40.5412962,58.1157051 37.4465143,61.210487 33.6289073,61.210487 C32.0813547,61.210487 30.6525815,60.7019313 29.5005925,59.8428245 C29.4821342,59.8713744 29.4638143,59.9000221 29.4456339,59.9287667 C28.1850247,58.5900823 26.3963113,57.7542926 24.4123888,57.7542926 C20.5947819,57.7542926 17.5,60.8490745 17.5,64.6666814 C17.5,68.4842884 20.5947819,71.5790703 24.4123888,71.5790703 C26.134517,71.5790703 27.7095556,70.9493053 28.919769,69.9075109 L28.919769,69.9075109 C28.9273935,69.9229526 28.9350558,69.9383724 28.9427558,69.95377 C30.174602,68.8171928 31.8206715,68.1228758 33.6289073,68.1228758 C37.4465143,68.1228758 40.5412962,71.2176578 40.5412962,75.0352647 C40.5412962,75.5186004 40.4916889,75.9903496 40.3972881,76.4456988 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/plugin-generic-theme": {
"title": "$:/core/images/plugin-generic-theme",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M27.6619958,98.5383065 C27.5690581,98.5388896 27.4761291,98.539182 27.383212,98.539182 C41.5122315,92.2342259 36.7359182,71.4340774 52.2062903,71.4340772 C52.3396942,72.0325374 52.4778143,72.6764878 52.6543744,73.3309353 C41.7206358,71.5725612 42.70852,93.6013809 27.6619958,98.5383065 Z M27.962646,98.5354078 C44.3675979,98.3221342 60.9448114,89.104528 60.944811,79.6231217 C57.0326028,79.6231217 55.0057081,78.1546059 53.8483468,76.2715831 C46.8437297,73.3160546 41.0335584,95.5643154 27.9626323,98.5354081 Z M60.4476718,66.8723739 C57.4632888,63.6421817 54.9582687,60.7541572 53.4305549,58.7453802 C47.3662923,50.7715364 44.307483,54.9700909 40.8462757,58.7453801 C37.3850684,62.5206692 41.7580858,65.5796149 38.4732643,68.2464352 C35.1884428,70.9132556 35.391237,71.8376623 29.8473278,66.9588778 C24.3034186,62.0800933 23.919977,60.7368279 26.4649349,57.9530299 C29.0098928,55.1692318 31.1369568,59.5524845 36.3357237,54.6053302 C41.5344905,49.6581758 37.1673192,45.2736183 37.1673192,45.2736183 C37.1673192,45.2736183 47.9916921,23.1463023 62.4556497,24.7805686 C76.9196074,26.4148348 56.9839048,22.6644011 52.0250205,40.0179431 C49.9018746,47.4478606 52.4201529,45.6971267 56.4460414,48.8353078 C57.8695188,49.9449088 63.120208,53.6842856 69.3136884,58.3372485 C77.8095419,50.1273311 87.3705002,40.8200581 90.1462007,38.0443577 C94.9225135,33.268045 99.6988262,38.0443577 94.9225134,42.8206705 C92.2168565,45.5263274 83.0052228,54.3768782 74.6585455,62.4104777 C84.7196352,70.2010353 95.1107413,79.0341049 95.1107416,82.5307694 C95.1107421,88.9149413 92.3944614,92.7263341 86.6764506,90.6368273 C83.0906414,89.3264812 73.3126471,80.2536547 65.0234105,71.7029822 C62.8994697,73.7599251 61.2357389,75.3821997 60.3189624,76.2989761 C57.6045976,78.4574835 53.6647127,73.2589589 55.5426497,71.5226634 C56.5140946,70.6244887 58.249291,68.9770292 60.4476718,66.8723739 L60.4476718,66.8723739 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/refresh-button": {
"title": "$:/core/images/refresh-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-refresh-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M106.369002,39.4325143 C116.529932,60.3119371 112.939592,86.1974934 95.5979797,103.539105 C73.7286194,125.408466 38.2713806,125.408466 16.4020203,103.539105 C-5.46734008,81.6697449 -5.46734008,46.2125061 16.4020203,24.3431458 C19.5262146,21.2189514 24.5915344,21.2189514 27.7157288,24.3431458 C30.8399231,27.4673401 30.8399231,32.5326599 27.7157288,35.6568542 C12.0947571,51.2778259 12.0947571,76.6044251 27.7157288,92.2253967 C43.3367004,107.846368 68.6632996,107.846368 84.2842712,92.2253967 C97.71993,78.7897379 99.5995262,58.1740623 89.9230597,42.729491 L83.4844861,54.9932839 C81.4307001,58.9052072 76.5945372,60.4115251 72.682614,58.3577391 C68.7706907,56.3039532 67.2643728,51.4677903 69.3181587,47.555867 L84.4354914,18.7613158 C86.4966389,14.8353707 91.3577499,13.3347805 95.273202,15.415792 L124.145886,30.7612457 C128.047354,32.8348248 129.52915,37.6785572 127.455571,41.5800249 C125.381992,45.4814927 120.53826,46.9632892 116.636792,44.8897102 L106.369002,39.4325143 Z M98.1470904,27.0648707 C97.9798954,26.8741582 97.811187,26.6843098 97.6409651,26.4953413 L98.6018187,26.1987327 L98.1470904,27.0648707 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/right-arrow": {
"title": "$:/core/images/right-arrow",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-right-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <path d=\"M80.3563798,109.353315 C78.9238993,110.786918 76.9450203,111.675144 74.7592239,111.675144 L-4.40893546,111.675144 C-8.77412698,111.675144 -12.3248558,108.130732 -12.3248558,103.758478 C-12.3248558,99.3951199 -8.78077754,95.8418109 -4.40893546,95.8418109 L66.8418109,95.8418109 L66.8418109,24.5910645 C66.8418109,20.225873 70.3862233,16.6751442 74.7584775,16.6751442 C79.1218352,16.6751442 82.6751442,20.2192225 82.6751442,24.5910645 L82.6751442,103.759224 C82.6751442,105.941695 81.7891419,107.920575 80.3566508,109.353886 Z\" transform=\"translate(35.175144, 64.175144) rotate(-45.000000) translate(-35.175144, -64.175144) \"></path>\n</svg>"
},
"$:/core/images/save-button": {
"title": "$:/core/images/save-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/star-filled": {
"title": "$:/core/images/star-filled",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-star-filled tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"nonzero\">\n <path d=\"M61.8361286,96.8228569 L99.1627704,124.110219 C101.883827,126.099427 105.541968,123.420868 104.505636,120.198072 L90.2895569,75.9887263 L89.0292911,79.8977279 L126.314504,52.5528988 C129.032541,50.5595011 127.635256,46.2255025 124.273711,46.2229134 L78.1610486,46.1873965 L81.4604673,48.6032923 L67.1773543,4.41589688 C66.1361365,1.19470104 61.6144265,1.19470104 60.5732087,4.41589688 L46.2900957,48.6032923 L49.5895144,46.1873965 L3.47685231,46.2229134 C0.115307373,46.2255025 -1.28197785,50.5595011 1.43605908,52.5528988 L38.7212719,79.8977279 L37.4610061,75.9887263 L23.2449266,120.198072 C22.2085954,123.420868 25.8667356,126.099427 28.5877926,124.110219 L65.9144344,96.8228569 L61.8361286,96.8228569 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/storyview-classic": {
"title": "$:/core/images/storyview-classic",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-storyview-classic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/storyview-pop": {
"title": "$:/core/images/storyview-pop",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-storyview-pop tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M16.0098166,56 C11.586117,56 8,59.5776607 8,63.9924054 L8,80.0075946 C8,84.4216782 11.5838751,88 16.0098166,88 L111.990183,88 C116.413883,88 120,84.4223393 120,80.0075946 L120,63.9924054 C120,59.5783218 116.416125,56 111.990183,56 L16.0098166,56 L16.0098166,56 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/storyview-zoomin": {
"title": "$:/core/images/storyview-zoomin",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-storyview-zoomin tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.578055 16,24.0085154 L16,71.9914846 C16,76.4144655 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.421945 112,71.9914846 L112,24.0085154 C112,19.5855345 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/tag-button": {
"title": "$:/core/images/tag-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-tag-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M18.1643182,47.6600756 L18.1677196,51.7651887 C18.1708869,55.5878829 20.3581578,60.8623899 23.0531352,63.5573673 L84.9021823,125.406414 C87.5996731,128.103905 91.971139,128.096834 94.6717387,125.396234 L125.766905,94.3010679 C128.473612,91.5943612 128.472063,87.2264889 125.777085,84.5315115 L63.9280381,22.6824644 C61.2305472,19.9849735 55.9517395,17.801995 52.1318769,17.8010313 L25.0560441,17.7942007 C21.2311475,17.7932358 18.1421354,20.8872832 18.1452985,24.7049463 L18.1535504,34.6641936 C18.2481119,34.6754562 18.3439134,34.6864294 18.4409623,34.6971263 C22.1702157,35.1081705 26.9295004,34.6530132 31.806204,33.5444844 C32.1342781,33.0700515 32.5094815,32.6184036 32.9318197,32.1960654 C35.6385117,29.4893734 39.5490441,28.718649 42.94592,29.8824694 C43.0432142,29.8394357 43.1402334,29.7961748 43.2369683,29.7526887 L43.3646982,30.0368244 C44.566601,30.5115916 45.6933052,31.2351533 46.6655958,32.2074439 C50.4612154,36.0030635 50.4663097,42.1518845 46.6769742,45.94122 C43.0594074,49.5587868 37.2914155,49.7181264 33.4734256,46.422636 C28.1082519,47.5454734 22.7987486,48.0186448 18.1643182,47.6600756 Z\"></path>\n <path d=\"M47.6333528,39.5324628 L47.6562932,39.5834939 C37.9670934,43.9391617 26.0718874,46.3819521 17.260095,45.4107025 C5.27267473,44.0894301 -1.02778744,36.4307276 2.44271359,24.0779512 C5.56175386,12.9761516 14.3014034,4.36129832 24.0466405,1.54817001 C34.7269254,-1.53487574 43.7955833,3.51606438 43.7955834,14.7730751 L35.1728168,14.7730752 C35.1728167,9.91428944 32.0946059,8.19982862 26.4381034,9.83267419 C19.5270911,11.8276553 13.046247,18.2159574 10.7440788,26.4102121 C8.82861123,33.2280582 11.161186,36.0634845 18.2047888,36.8398415 C25.3302805,37.6252244 35.7353482,35.4884477 44.1208333,31.7188498 L44.1475077,31.7781871 C44.159701,31.7725635 44.1718402,31.7671479 44.1839238,31.7619434 C45.9448098,31.0035157 50.4503245,38.3109156 47.7081571,39.5012767 C47.6834429,39.512005 47.6585061,39.5223987 47.6333528,39.5324628 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/theme-button": {
"title": "$:/core/images/theme-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-theme-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <g transform=\"translate(6.762422, 19.968999)\">\n <path d=\"M0.824945506,108.186742 C0.664785639,108.187747 0.504640965,108.188251 0.344516735,108.188251 C24.6927592,97.3230528 16.4618388,61.4785938 43.121606,61.4785936 C43.3514982,62.5099075 43.5895175,63.6196137 43.8937798,64.7474092 C25.0518979,61.7172401 26.754298,99.6790423 0.824939051,108.186742 Z M1.34304326,108.181747 C29.613352,107.814217 58.1805158,91.9297101 58.1805151,75.5906019 C51.4386888,75.5906018 47.9457839,73.0599394 45.9513275,69.8149659 C33.880418,64.7217657 23.8678719,103.061726 1.34301955,108.181748 Z\"></path>\n <path d=\"M48.871084,61.6312522 C45.6348746,64.6233738 52.4243955,73.581882 57.1020034,69.8621716 C65.3329228,61.631253 108.502656,20.4006304 116.733576,12.169711 C124.964495,3.9387916 116.733576,-4.29212771 108.502656,3.9387916 C100.271737,12.1697108 57.4180113,53.7289683 48.871084,61.6312522 Z\"></path>\n </g>\n <path d=\"M62.2824054,71.6211067 C57.93733,66.8541323 54.3123948,62.6301561 51.9937779,59.5814279 C41.5433616,45.8402704 36.2721798,53.0755512 30.307554,59.5814276 C24.3429282,66.0873041 31.8788571,71.3587209 26.2181932,75.9543964 C20.5575294,80.5500719 20.9070004,82.1430826 11.3532982,73.7355757 C1.79959591,65.3280689 1.13881905,63.0132479 5.52449152,58.2159872 C9.91016399,53.4187265 13.5756887,60.9722938 22.5346144,52.4469667 C31.4935401,43.9216395 23.9676854,36.3658236 23.9676854,36.3658236 C23.9676854,36.3658236 42.6210998,-1.76571499 67.5465342,1.05058165 C92.4719685,3.8668783 58.1171911,-2.5961653 49.5716499,27.3088291 C45.9128772,40.1126497 50.2525733,37.0956468 57.1903023,42.5036084 C59.4792141,44.2878157 67.5103988,50.0176866 77.2457031,57.2905766 C71.4143155,62.9019825 66.2337717,67.8661661 62.2824054,71.6211067 Z M73.4870997,83.4678852 C87.4278174,97.7290403 103.323635,112.360587 109.285731,114.539289 C119.139459,118.140092 123.820369,111.571999 123.820368,100.570289 C123.820367,94.7414103 107.064445,80.3074425 90.2759123,67.2185217 C83.6390655,73.6178 77.7700759,79.2918373 73.4870997,83.4678852 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/tip": {
"title": "$:/core/images/tip",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-tip tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64,128.241818 C99.346224,128.241818 128,99.5880417 128,64.2418177 C128,28.8955937 99.346224,0.241817675 64,0.241817675 C28.653776,0.241817675 0,28.8955937 0,64.2418177 C0,99.5880417 28.653776,128.241818 64,128.241818 Z M75.9358659,91.4531941 C75.3115438,95.581915 70.2059206,98.8016748 64,98.8016748 C57.7940794,98.8016748 52.6884562,95.581915 52.0641341,91.4531941 C54.3299053,94.0502127 58.8248941,95.8192805 64,95.8192805 C69.1751059,95.8192805 73.6700947,94.0502127 75.9358659,91.4531941 L75.9358659,91.4531941 Z M75.9358659,95.9453413 C75.3115438,100.074062 70.2059206,103.293822 64,103.293822 C57.7940794,103.293822 52.6884562,100.074062 52.0641341,95.9453413 C54.3299053,98.5423599 58.8248941,100.311428 64,100.311428 C69.1751059,100.311428 73.6700947,98.5423599 75.9358659,95.9453413 L75.9358659,95.9453413 Z M75.9358659,100.40119 C75.3115438,104.529911 70.2059206,107.74967 64,107.74967 C57.7940794,107.74967 52.6884562,104.529911 52.0641341,100.40119 C54.3299053,102.998208 58.8248941,104.767276 64,104.767276 C69.1751059,104.767276 73.6700947,102.998208 75.9358659,100.40119 L75.9358659,100.40119 Z M75.9358659,104.893337 C75.3115438,109.022058 70.2059206,112.241818 64,112.241818 C57.7940794,112.241818 52.6884562,109.022058 52.0641341,104.893337 C54.3299053,107.490356 58.8248941,109.259423 64,109.259423 C69.1751059,109.259423 73.6700947,107.490356 75.9358659,104.893337 L75.9358659,104.893337 Z M64.3010456,24.2418177 C75.9193117,24.2418188 88.0000013,32.0619847 88,48.4419659 C87.9999987,64.8219472 75.9193018,71.7540963 75.9193021,83.5755932 C75.9193022,89.4486648 70.0521957,92.8368862 63.9999994,92.8368862 C57.947803,92.8368862 51.9731007,89.8295115 51.9731007,83.5755932 C51.9731007,71.1469799 39.9999998,65.4700602 40,48.4419647 C40.0000002,31.4138691 52.6827796,24.2418166 64.3010456,24.2418177 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/twitter": {
"title": "$:/core/images/twitter",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-twitter tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M41.6263422,115.803477 C27.0279663,115.803477 13.4398394,111.540813 1.99987456,104.234833 C4.02221627,104.472643 6.08004574,104.594302 8.16644978,104.594302 C20.277456,104.594302 31.4238403,100.47763 40.270894,93.5715185 C28.9590538,93.3635501 19.4123842,85.9189246 16.1230832,75.6885328 C17.7011365,75.9892376 19.320669,76.1503787 20.9862896,76.1503787 C23.344152,76.1503787 25.6278127,75.8359011 27.7971751,75.247346 C15.9709927,72.8821073 7.06079851,62.4745062 7.06079851,49.9982394 C7.06079851,49.8898938 7.06079851,49.7820074 7.06264203,49.67458 C10.5482779,51.6032228 14.5339687,52.7615103 18.7717609,52.8951059 C11.8355159,48.277565 7.2714207,40.3958845 7.2714207,31.4624258 C7.2714207,26.7434257 8.54621495,22.3200804 10.7713439,18.5169676 C23.5211299,34.0957738 42.568842,44.3472839 64.0532269,45.4210985 C63.6126256,43.5365285 63.3835682,41.5711584 63.3835682,39.5529928 C63.3835682,25.3326379 74.95811,13.8034766 89.2347917,13.8034766 C96.6697089,13.8034766 103.387958,16.930807 108.103682,21.9353619 C113.991886,20.780288 119.52429,18.6372496 124.518847,15.6866694 C122.588682,21.6993889 118.490075,26.7457211 113.152623,29.9327334 C118.381769,29.3102055 123.363882,27.926045 127.999875,25.8780385 C124.534056,31.0418981 120.151087,35.5772616 115.100763,39.2077561 C115.150538,40.3118708 115.175426,41.4224128 115.175426,42.538923 C115.175426,76.5663154 89.1744164,115.803477 41.6263422,115.803477\"></path>\n </g>\n</svg>\n"
},
"$:/core/images/unlocked-padlock": {
"title": "$:/core/images/unlocked-padlock",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-unlocked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M48.6266053,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L30.136303,64 C19.6806213,51.3490406 2.77158986,28.2115132 25.8366966,8.85759246 C50.4723026,-11.8141335 71.6711028,13.2108337 81.613302,25.0594855 C91.5555012,36.9081373 78.9368488,47.4964439 69.1559674,34.9513593 C59.375086,22.4062748 47.9893192,10.8049522 35.9485154,20.9083862 C23.9077117,31.0118202 34.192312,43.2685325 44.7624679,55.8655518 C47.229397,58.805523 48.403443,61.5979188 48.6266053,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/up-arrow": {
"created": "20150316000544368",
"modified": "20150316000831867",
"tags": "$:/tags/Image",
"title": "$:/core/images/up-arrow",
"text": "<svg class=\"tc-image-up-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n<path transform=\"rotate(-135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25074c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056l0.00001,-0.00001z\" />\n</svg>\n \n"
},
"$:/core/images/video": {
"title": "$:/core/images/video",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-video tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64,12 C29.0909091,12 8.72727273,14.9166667 5.81818182,17.8333333 C2.90909091,20.75 1.93784382e-15,41.1666667 0,64.5 C1.93784382e-15,87.8333333 2.90909091,108.25 5.81818182,111.166667 C8.72727273,114.083333 29.0909091,117 64,117 C98.9090909,117 119.272727,114.083333 122.181818,111.166667 C125.090909,108.25 128,87.8333333 128,64.5 C128,41.1666667 125.090909,20.75 122.181818,17.8333333 C119.272727,14.9166667 98.9090909,12 64,12 Z M54.9161194,44.6182253 C51.102648,42.0759111 48.0112186,43.7391738 48.0112186,48.3159447 L48.0112186,79.6840553 C48.0112186,84.2685636 51.109784,85.9193316 54.9161194,83.3817747 L77.0838806,68.6032672 C80.897352,66.0609529 80.890216,61.9342897 77.0838806,59.3967328 L54.9161194,44.6182253 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/warning": {
"title": "$:/core/images/warning",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-warning tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M57.0717968,11 C60.1509982,5.66666667 67.8490018,5.66666667 70.9282032,11 L126.353829,107 C129.433031,112.333333 125.584029,119 119.425626,119 L8.57437416,119 C2.41597129,119 -1.43303051,112.333333 1.64617093,107 L57.0717968,11 Z M64,37 C59.581722,37 56,40.5820489 56,44.9935776 L56,73.0064224 C56,77.4211534 59.5907123,81 64,81 C68.418278,81 72,77.4179511 72,73.0064224 L72,44.9935776 C72,40.5788466 68.4092877,37 64,37 Z M64,104 C68.418278,104 72,100.418278 72,96 C72,91.581722 68.418278,88 64,88 C59.581722,88 56,91.581722 56,96 C56,100.418278 59.581722,104 64,104 Z\"></path>\n </g>\n</svg>"
},
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "advanced search"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Advanced search"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "cancel"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Discard changes to this tiddler"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "clone"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Clone this tiddler"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "close"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Close this tiddler"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "close all"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Close all tiddlers"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "close others"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Close other tiddlers"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "control panel"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Open control panel"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "delete"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Delete this tiddler"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "edit"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Edit this tiddler"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "encryption"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Set or clear a password for saving this wiki"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "clear password"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Clear the password and save this wiki without encryption"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "set password"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Set a password for saving this wiki with encryption"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "export all"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Export all tiddlers"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "export tiddler"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Export tiddler"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "export tiddlers"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Export tiddlers"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "full-screen"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Enter or leave full-screen mode"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "help"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Show help panel"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "import"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Import files"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "info"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Show information for this tiddler"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "home"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Open the default tiddlers"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "language"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Choose the user interface language"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "more"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "More actions"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "new here"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Create a new tiddler tagged with this one"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "new journal"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Create a new journal tiddler"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "new journal here"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Create a new journal tiddler tagged with this one"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "new tiddler"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Create a new tiddler"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "permalink"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Set browser address bar to a direct link to this tiddler"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "permaview"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Set browser address bar to a direct link to all the tiddlers in this story"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "refresh"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Perform a full refresh of the wiki"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "ok"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Confirm changes to this tiddler"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "save changes"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Save changes"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "storyview"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Choose the story visualisation"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "hide sidebar"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Hide sidebar"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "show sidebar"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Show sidebar"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "tag manager"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Open tag manager"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "theme"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Choose the display theme"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Advanced"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Internal information about this TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Appearance"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Ways to customise the appearance of your TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Animation duration:"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Basics"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Default tiddlers:"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Choose which tiddlers are displayed at startup:"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Hello! Current language:"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Title of new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Tags for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Number of overridden shadow tiddlers:"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Number of shadow tiddlers:"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Subtitle:"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Number of system tiddlers:"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Number of tags:"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Number of tiddlers:"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Title of this ~TiddlyWiki:"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Username for signing edits:"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "~TiddlyWiki version:"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Editor Types"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Editor"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "These tiddlers determine which editor is used to edit specific tiddler types."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Type"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Info"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Information about this TiddlyWiki"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Loaded Modules"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/language/ControlPanel/LoadedModules/Hint",
"text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
},
"$:/language/ControlPanel/Palette/Caption": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Palette"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "clone"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
"text": "It is recommended that you clone this shadow palette before editing it"
},
"$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "This shadow palette has been modified"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Editing"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "reset"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "hide editor"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Current palette:"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "show editor"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Install plugins from the official library"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Get more plugins"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "disable"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Disable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(disabled)"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "None"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "enable"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Enable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Currently installed plugins:"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Languages"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Language pack plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Themes"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Theme plugins"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/Heading": {
"title": "$:/language/ControlPanel/Saving/Heading",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Advanced Settings"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Backup Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Backups"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Upload Filename"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Password": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Password"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "Server URL"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Upload Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Wiki Name"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Autosave"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Do not save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Automatically save changes during editing"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Settings"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "These settings let you customise the behaviour of TiddlyWiki."
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Navigation Address Bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Behaviour of the browser address bar when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Do not update the address bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Include the target tiddler"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Include the target tiddler and the current story sequence"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "Navigation History"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Update browser history when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Do not update history"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Update history"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Toolbar Buttons"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Default toolbar button appearance:"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Include icon"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Include text"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Default Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Specify which sidebar tab is displayed by default"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Story View"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Current view:"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Theme"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Current theme:"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Tiddler Fields"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/language/ControlPanel/TiddlerFields/Hint",
"text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
},
"$:/language/ControlPanel/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Toolbars"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "Edit Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in edit mode"
},
"$:/language/ControlPanel/Toolbars/Hint": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Select which toolbar buttons are displayed"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Page Toolbar"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
"text": "Choose which buttons are displayed on the main page toolbar "
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "View Toolbar"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in view mode"
},
"$:/language/ControlPanel/Tools/Download/Full/Caption": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Download full wiki"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "st"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": "nd"
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": "rd"
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": "th"
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": "th"
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": "th"
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": "th"
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": "th"
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": "th"
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": "th"
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": "th"
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": "th"
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": "th"
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": "th"
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": "th"
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": "th"
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": "th"
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": "th"
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": "th"
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": "th"
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": "st"
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": "nd"
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": "rd"
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": "th"
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": "th"
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": "th"
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": "th"
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": "th"
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": "th"
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": "th"
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": "st"
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Sunday"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Monday"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Tuesday"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Wednesday"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Thursday"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Friday"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Saturday"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "January"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "February"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "March"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "April"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "May"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "June"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "July"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "August"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "September"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "October"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "November"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "December"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "am"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "pm"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Sun"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Mon"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Tue"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Wed"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Thu"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Fri"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Sat"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "Jan"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "Feb"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "Mar"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "Apr"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "May"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "Jun"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "Jul"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "Aug"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "Sep"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "Oct"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "Nov"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "Dec"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "<<period>> days from now"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "<<period>> hours from now"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "<<period>> minutes from now"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "<<period>> months from now"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "1 second from now"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "<<period>> seconds from now"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "<<period>> years from now"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "<<period>> days ago"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "<<period>> hours ago"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "<<period>> minutes ago"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "<<period>> months ago"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "1 second ago"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "<<period>> seconds ago"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "<<period>> years ago"
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations that may be used with the RevealWidget."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Commands that can be executed under Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Data to be inserted into `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Individual filter operator methods."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Global data to be inserted into `$tw`."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Operands for the ''is'' filter operator."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "JavaScript macro definitions."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Parsers for different content types."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Savers handle different methods for saving files from the browser."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Startup functions."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Story views customise the animation and behaviour of list widgets."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Converts different content types into tiddlers."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Defines the behaviour of an individual tiddler field."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Adds methods to the `$tw.Tiddler` prototype."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Applies upgrade processing to tiddlers during an upgrade/import."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Adds methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Adds Node.js-specific methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Widgets encapsulate DOM rendering and refreshing."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Adds methods to `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Individual parser rules for the main WikiText parser."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Alert background"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Alert border"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Alert highlight"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Alert muted foreground"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "General background"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Blockquote bar"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Unsaved changes indicator"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Code background"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Code border"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Code foreground"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Download button background"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Download button foreground"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Dragger background"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Dragger foreground"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Dropdown background"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Dropdown border"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Dropdown tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Dropdown tab background"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Dropzone background"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "External link background hover"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "External link background visited"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "External link background"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "External link foreground hover"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "External link foreground visited"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "External link foreground"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "General foreground"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Message box background"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Message box border"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Message box foreground"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Modal backdrop"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Modal background"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Modal border"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Modal footer background"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Modal footer border"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Modal header border"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "General muted foreground"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Notification background"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Notification border"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Page background"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Preformatted code background"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Preformatted code border"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "General primary"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Sidebar button foreground"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Sidebar controls foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Sidebar controls foreground"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Sidebar foreground shadow"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Sidebar foreground"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Sidebar muted foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Sidebar muted foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Sidebar tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Sidebar tab background"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Sidebar tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Sidebar tab border"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Sidebar tab divider"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Sidebar tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Sidebar tab foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Sidebar tiddler link foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Sidebar tiddler link foreground"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Static alert foreground"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Tab background"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Tab border"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Tab divider"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Tab foreground"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Table border"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Table footer background"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Table header background"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Tag background"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Tag foreground"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Tiddler background"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Tiddler border"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Tiddler controls foreground hover"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Tiddler controls foreground for selected controls"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Tiddler controls foreground"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Tiddler editor background"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Tiddler editor border image"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Tiddler editor border"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Tiddler editor background for even fields"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Tiddler editor background for odd fields"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Tiddler info panel background"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Tiddler info panel border"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Tiddler info panel tab background"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Tiddler link background"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Tiddler link foreground"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Tiddler subtitle foreground"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Tiddler title foreground"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Toolbar 'new tiddler' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Toolbar 'options' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Toolbar 'save' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Toolbar 'info' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Toolbar 'edit' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Toolbar 'close' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Toolbar 'delete' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Toolbar 'cancel' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Toolbar 'done' button foreground"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Untagged pill background"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Very muted foreground"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/language/EditTemplate/Body/External/Hint",
"text": "This is an external tiddler stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
},
"$:/language/EditTemplate/Body/Hint": {
"title": "$:/language/EditTemplate/Body/Hint",
"text": "Use [[wiki text|http://tiddlywiki.com/static/WikiText.html]] to add formatting, images, and dynamic features"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Type the text for this tiddler"
},
"$:/language/EditTemplate/Body/Preview/Button/Hide": {
"title": "$:/language/EditTemplate/Body/Preview/Button/Hide",
"text": "hide preview"
},
"$:/language/EditTemplate/Body/Preview/Button/Show": {
"title": "$:/language/EditTemplate/Body/Preview/Button/Show",
"text": "show preview"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "remove field"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Remove field"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "field name"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Add a new field:"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "field value"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "This is a shadow tiddler. Any changes will override the default version"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "This is a modified shadow tiddler. You can revert to the default version by deleting this tiddler"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "tag name"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "tag list"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Show tag list"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "content type list"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Show content type list"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "delete content type"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Delete content type"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "content type"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Type:"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "Static HTML"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "JSON file"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "CSV file"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "\".tid\" file"
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "The full URI of an external image tiddler"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "The name of the bag from which a tiddler came"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "The text to be displayed on a tab or button"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "The CSS color value associated with a tiddler"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "The date a tiddler was created"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "The name of the person who created a tiddler"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "For a plugin, lists the dependent plugin titles"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "The descriptive text for a plugin, or a modal dialogue"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/language/Docs/Fields/draft.of",
"text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
},
"$:/language/Docs/Fields/draft.title": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "For draft tiddlers, contains the proposed new title of the tiddler"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "The footer text for a wizard"
},
"$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against": {
"title": "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against",
"text": "A temporary storage field used in [[$:/core/templates/static.content]]"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "The title of the tiddler containing the icon associated with a tiddler"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "If set to \"yes\" indicates that a tiddler should be saved as a JavaScript library"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "An ordered list of tiddler titles associated with a tiddler"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/language/Docs/Fields/list-before",
"text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
},
"$:/language/Docs/Fields/list-after": {
"title": "$:/language/Docs/Fields/list-after",
"text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles"
},
"$:/language/Docs/Fields/modified": {
"title": "$:/language/Docs/Fields/modified",
"text": "The date and time at which a tiddler was last modified"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "The tiddler title associated with the person who last modified a tiddler"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "The human readable name associated with a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "A numerical value indicating the priority of a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "The type of plugin in a plugin tiddler"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "The revision of the tiddler held at the server"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Date of a TiddlyWiki release"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "The source URL associated with a tiddler"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "The subtitle text for a wizard"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "A list of tags associated with a tiddler"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "The body text of a tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "The unique name of a tiddler"
},
"$:/language/Docs/Fields/type": {
"title": "$:/language/Docs/Fields/type",
"text": "The content type of a tiddler"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "Version information for a plugin"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "All tiddlers except system tiddlers"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Recently modified tiddlers, including system tiddlers"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Recently modified tiddlers"
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "All tags except system tags"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Missing tiddlers"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Draft tiddlers"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Orphan tiddlers"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "System tiddlers"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Shadow tiddlers"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Overridden shadow tiddlers"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "System tags"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Non wiki-text tiddlers"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is important to make sure that you can reliably save changes. See http://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit-text tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
},
"$:/language/Help/build": {
"title": "$:/language/Help/build",
"description": "Automatically run configured commands",
"text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Clear a password for subsequent crypto operations",
"text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/language/Help/editions",
"description": "Lists the available editions of TiddlyWiki",
"text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Display help for TiddlyWiki commands",
"text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
},
"$:/language/Help/init": {
"title": "$:/language/Help/init",
"description": "Initialise a new wiki folder",
"text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Load tiddlers from a file",
"text": "Load tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` or other files \n\n```\n--load <filepath>\n```\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
},
"$:/language/Help/makelibrary": {
"title": "$:/language/Help/makelibrary",
"description": "Construct library plugin required by upgrade process",
"text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"text": "No such help item"
},
"$:/language/Help/output": {
"title": "$:/language/Help/output",
"description": "Set the base output directory for subsequent commands",
"text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Set a password for subsequent crypto operations",
"text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Render an individual tiddler as a specified ContentType",
"text": "Render an individual tiddler as a specified ContentType, defaults to `text/html` and save it to the specified filename:\n\n```\n--rendertiddler <title> <filename> [<type>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Render tiddlers matching a filter to a specified ContentType",
"text": "Render a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the \"noclean\" parameter is specified. The target directory is recursively created if it is missing.\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Saves a raw tiddler to a file",
"text": "Saves an individual tiddler in its raw text or binary format to the specified filename. \n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
},
"$:/language/Help/savetiddlers": {
"title": "$:/language/Help/savetiddlers",
"description": "Saves a group of raw tiddlers to a directory",
"text": "Saves a group of tiddlers in their raw text or binary format to the specified directory. \n\n```\n--savetiddlers <filter> <pathname>\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the pathname are automatically created.\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Provides an HTTP server interface to TiddlyWiki",
"text": "The server built in to TiddlyWiki5 is very simple. Although compatible with TiddlyWeb it doesn't support many of the features needed for robust Internet-facing usage.\n\nAt the root, it serves a rendering of a specified tiddler. Away from the root, it serves individual tiddlers encoded in JSON, and supports the basic HTTP operations for `GET`, `PUT` and `DELETE`.\n\n```\n--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix>\n```\n\nThe parameters are:\n\n* ''port'' - port number to serve from (defaults to \"8080\")\n* ''roottiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\") \n* ''rendertype'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''servetype'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''pathprefix'' - optional prefix for paths\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation isn't suitable for general use.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password:\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port.\n"
},
"$:/language/Help/setfield": {
"title": "$:/language/Help/setfield",
"description": "Prepares external tiddlers for use",
"text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''type'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n\n"
},
"$:/language/Help/unpackplugin": {
"title": "$:/language/Help/unpackplugin",
"description": "Unpack the payload tiddlers from a plugin",
"text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Triggers verbose output mode",
"text": "Triggers verbose output, useful for debugging \n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Displays the version number of TiddlyWiki",
"text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Cancel"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "These tiddlers are ready to import:"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Import"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Select"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Status"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Title"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Blocked incompatible or obsolete plugin "
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)"
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Upgraded plugin from <<incoming>> to <<upgraded>>"
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Blocked temporary state tiddler"
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Blocked system tiddler"
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Migrated theme tweak from <$text text=<<from>>/>"
},
"$:/language/BinaryWarning/Prompt": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "This tiddler contains binary data"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/language/ClassicWarning/Hint",
"text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See http://tiddlywiki.com/static/Upgrading.html for more details. "
},
"$:/language/ClassicWarning/Upgrade/Caption": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "upgrade"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "close all"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/language/ConfirmEditShadowTiddler",
"text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "New Tiddler"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Drop here (or use the 'Escape' key to cancel)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Cancel"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Set a new password for this TiddlyWiki"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Username"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Password"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Repeat password"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Passwords do not match"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Set password"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" - click {{$:/core/images/edit-button}} to create"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Official ~TiddlyWiki Plugin Library"
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect"
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DDth MMM YYYY"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "This is a system tiddler"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Colour"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icon"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "You have unsaved changes in TiddlyWiki"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"type": "text/vnd.tiddlywiki",
"subtitle": "Download changes",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "http://tiddlywiki.com/static/DownloadingChanges.html",
"text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
},
"$:/language/Modals/SaveInstructions": {
"title": "$:/language/Modals/SaveInstructions",
"type": "text/vnd.tiddlywiki",
"subtitle": "Save your work",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "http://tiddlywiki.com/static/SavingChanges.html",
"text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
},
"$:/config/NewJournal/Title": {
"title": "$:/config/NewJournal/Title",
"text": "DDth MMM YYYY"
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"text": "Journal"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Saved wiki"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Starting to save wiki"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "List"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Filter"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Search via a [[filter expression|http://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Shadows"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Search for shadow tiddlers"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Standard"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Search for standard tiddlers"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "System"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Search for system tiddlers"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "All"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Contents"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Drafts"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Missing"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "More"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Open"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Orphans"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Recent"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Shadows"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "System"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Tags"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "untagged"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Tools"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Types"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "a non-linear personal web notebook"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "My ~TiddlyWiki"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Advanced"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "none"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Plugin Details"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "This plugin contains the following shadow tiddlers:"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Shadow Status"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "It is overridden by an ordinary tiddler"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Fields"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "List"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "This tiddler does not have a list"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "Listed"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "This tiddler is not listed by any others"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "References"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "No tiddlers link to this one"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Tagging"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "No tiddlers are tagged with this one"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Tools"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "JavaScript code",
"name": "application/javascript",
"group": "Developer"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Developer"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
"description": "Data dictionary",
"name": "application/x-tiddler-dictionary",
"group": "Developer"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF image",
"name": "image/gif",
"group": "Image"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG image",
"name": "image/jpeg",
"group": "Image"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG image",
"name": "image/png",
"group": "Image"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "Structured Vector Graphics image",
"name": "image/svg+xml",
"group": "Image"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "ICO format icon file",
"name": "image/x-icon",
"group": "Image"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Developer"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML markup",
"name": "text/html",
"group": "Text"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Plain text",
"name": "text/plain",
"group": "Text"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Text"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Text"
},
"$:/languages/en-GB/icon": {
"title": "$:/languages/en-GB/icon",
"type": "image/svg+xml",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
},
"$:/languages/en-GB": {
"title": "$:/languages/en-GB",
"name": "en-GB",
"description": "English (British)",
"author": "JeremyRuston",
"core-version": ">=5.0.0\"",
"text": "Stub pseudo-plugin for the default language"
},
"$:/core/modules/commander.js": {
"text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
"title": "$:/core/modules/commander.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/commands/build.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/build.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/clearpassword.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/clearpassword.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/editions.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\" \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/editions.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/help.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/help.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/init.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/init.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/load.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar ext = path.extname(self.params[0]);\n\tfs.readFile(this.params[0],$tw.utils.getTypeEncoding(ext),function(err,data) {\n\t\tif (err) {\n\t\t\tself.callback(err);\n\t\t} else {\n\t\t\tvar fields = {title: self.params[0]},\n\t\t\t\ttype = path.extname(self.params[0]);\n\t\t\tvar tiddlers = self.commander.wiki.deserializeTiddlers(type,data,fields);\n\t\t\tif(!tiddlers) {\n\t\t\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t\t\t} else {\n\t\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddlers[t]));\n\t\t\t\t}\n\t\t\t\tself.callback(null);\t\n\t\t\t}\n\t\t}\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/load.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/makelibrary.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.pluginsPath));\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.themesPath));\n\tcollectPlugins(path.resolve($tw.boot.corePath,$tw.config.languagesPath));\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers},null,$tw.config.preferences.jsonSpaces)\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/makelibrary.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/output.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/output.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/password.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/password.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\";\n\t$tw.utils.createFileDirectories(filename);\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/rendertiddler.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\") != \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/rendertiddlers.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savelibrarytiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerData(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler,null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{text: undefined, readme: readmeContent, icon: iconContent}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/savelibrarytiddlers.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title),\n\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t$tw.utils.createFileDirectories(filename);\n\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/savetiddler.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.deleteDirectory(pathname);\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/savetiddlers.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/server.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif(!$tw.browser) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\thttp = require(\"http\");\n}\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\n/*\nA simple HTTP server with regexp-based routes\n*/\nfunction SimpleServer(options) {\n\tthis.routes = options.routes || [];\n\tthis.wiki = options.wiki;\n\tthis.variables = options.variables || {};\n}\n\nSimpleServer.prototype.set = function(obj) {\n\tvar self = this;\n\t$tw.utils.each(obj,function(value,name) {\n\t\tself.variables[name] = value;\n\t});\n};\n\nSimpleServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nSimpleServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nSimpleServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\"pathprefix\") || \"\";\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length);\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nSimpleServer.prototype.checkCredentials = function(request,incomingUsername,incomingPassword) {\n\tvar header = request.headers.authorization || \"\",\n\t\ttoken = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tusername = parts[0],\n\t\tpassword = parts[1];\n\tif(incomingUsername === username && incomingPassword === password) {\n\t\treturn \"ALLOWED\";\n\t} else {\n\t\treturn \"DENIED\";\n\t}\n};\n\nSimpleServer.prototype.listen = function(port,host) {\n\tvar self = this;\n\thttp.createServer(function(request,response) {\n\t\t// Compose the state object\n\t\tvar state = {};\n\t\tstate.wiki = self.wiki;\n\t\tstate.server = self;\n\t\tstate.urlInfo = url.parse(request.url);\n\t\t// Find the route that matches this path\n\t\tvar route = self.findMatchingRoute(request,state);\n\t\t// Check for the username and password if we've got one\n\t\tvar username = self.get(\"username\"),\n\t\t\tpassword = self.get(\"password\");\n\t\tif(username && password) {\n\t\t\t// Check they match\n\t\t\tif(self.checkCredentials(request,username,password) !== \"ALLOWED\") {\n\t\t\t\tvar servername = state.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\";\n\t\t\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + servername + '\"'\n\t\t\t\t});\n\t\t\t\tresponse.end();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// Return a 404 if we didn't find a route\n\t\tif(!route) {\n\t\t\tresponse.writeHead(404);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t\t// Set the encoding for the incoming request\n\t\t// TODO: Presumably this would need tweaking if we supported PUTting binary tiddlers\n\t\trequest.setEncoding(\"utf8\");\n\t\t// Dispatch the appropriate method\n\t\tswitch(request.method) {\n\t\t\tcase \"GET\": // Intentional fall-through\n\t\t\tcase \"DELETE\":\n\t\t\t\troute.handler(request,response,state);\n\t\t\t\tbreak;\n\t\t\tcase \"PUT\":\n\t\t\t\tvar data = \"\";\n\t\t\t\trequest.on(\"data\",function(chunk) {\n\t\t\t\t\tdata += chunk.toString();\n\t\t\t\t});\n\t\t\t\trequest.on(\"end\",function() {\n\t\t\t\t\tstate.data = data;\n\t\t\t\t\troute.handler(request,response,state);\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t}).listen(port,host);\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n\t// Set up server\n\tthis.server = new SimpleServer({\n\t\twiki: this.commander.wiki\n\t});\n\t// Add route handlers\n\tthis.server.addRoute({\n\t\tmethod: \"PUT\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\tfields = JSON.parse(state.data);\n\t\t\t// Pull up any subfields in the `fields` object\n\t\t\tif(fields.fields) {\n\t\t\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\t\t\tfields[name] = field;\n\t\t\t\t});\n\t\t\t\tdelete fields.fields;\n\t\t\t}\n\t\t\t// Remove any revision field\n\t\t\tif(fields.revision) {\n\t\t\t\tdelete fields.revision;\n\t\t\t}\n\t\t\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title}));\n\t\t\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\t\t\tresponse.writeHead(204, \"OK\",{\n\t\t\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\t\t\"Content-Type\": \"text/plain\"\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"DELETE\",\n\t\tpath: /^\\/bags\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]);\n\t\t\tstate.wiki.deleteTiddler(title);\n\t\t\tresponse.writeHead(204, \"OK\", {\n\t\t\t\t\"Content-Type\": \"text/plain\"\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": state.server.get(\"serveType\")});\n\t\t\tvar text = state.wiki.renderTiddler(state.server.get(\"renderType\"),state.server.get(\"rootTiddler\"));\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/status$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\tvar text = JSON.stringify({\n\t\t\t\tusername: state.server.get(\"username\"),\n\t\t\t\tspace: {\n\t\t\t\t\trecipe: \"default\"\n\t\t\t\t},\n\t\t\t\ttiddlywiki_version: $tw.version\n\t\t\t});\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/favicon.ico$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\t\t\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\t\t\tresponse.end(buffer,\"base64\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers.json$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\tvar tiddlers = [];\n\t\t\tstate.wiki.forEachTiddler({sortField: \"title\"},function(title,tiddler) {\n\t\t\t\tvar tiddlerFields = {};\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tif(name !== \"text\") {\n\t\t\t\t\t\ttiddlerFields[name] = tiddler.getFieldString(name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\ttiddlers.push(tiddlerFields);\n\t\t\t});\n\t\t\tvar text = JSON.stringify(tiddlers);\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\ttiddler = state.wiki.getTiddler(title),\n\t\t\t\ttiddlerFields = {},\n\t\t\t\tknownFields = [\n\t\t\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t\t\t];\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\t\t\ttiddlerFields[name] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t\t\t} else {\n\t\t\t\tresponse.writeHead(404);\n\t\t\t\tresponse.end();\n\t\t\t}\n\t\t}\n\t});\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\tvar port = this.params[0] || \"8080\",\n\t\trootTiddler = this.params[1] || \"$:/core/save/all\",\n\t\trenderType = this.params[2] || \"text/plain\",\n\t\tserveType = this.params[3] || \"text/html\",\n\t\tusername = this.params[4],\n\t\tpassword = this.params[5],\n\t\thost = this.params[6] || \"127.0.0.1\",\n\t\tpathprefix = this.params[7];\n\tthis.server.set({\n\t\trootTiddler: rootTiddler,\n\t\trenderType: renderType,\n\t\tserveType: serveType,\n\t\tusername: username,\n\t\tpassword: password,\n\t\tpathprefix: pathprefix\n\t});\n\tthis.server.listen(port,host);\n\tconsole.log(\"Serving on \" + host + \":\" + port);\n\tconsole.log(\"(press ctrl-C to exit)\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/server.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/setfield.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/setfield.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/unpackplugin.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerData(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/unpackplugin.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/verbose.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n \" + $tw.boot.logMessages.join(\"\\n \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/verbose.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/version.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/version.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/config.js": {
"text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter: \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
"title": "$:/core/modules/config.js",
"type": "application/javascript",
"module-type": "config"
},
"$:/core/modules/deserializers.js": {
"text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming = JSON.parse(text),\n\t\tresults = [];\n\tif($tw.utils.isArray(incoming)) {\n\t\tfor(var t=0; t<incoming.length; t++) {\n\t\t\tvar incomingFields = incoming[t],\n\t\t\t\tfields = {};\n\t\t\tfor(var f in incomingFields) {\n\t\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t\t}\n\t\t\t}\n\t\t\tresults.push(fields);\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
"title": "$:/core/modules/deserializers.js",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/core/modules/filters/addprefix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/addprefix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/addsuffix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/addsuffix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/after.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/after.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/all/current.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/current.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/missing.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/missing.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/orphans.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/orphans.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/shadows.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/shadows.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/tiddlers.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/all.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/backlinks.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/backlinks.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/before.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/before.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/commands.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/commands.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/each.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = {};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value;\n\t\t\tif((operator.operand === \"\") || (operator.operand === \"title\")) {\n\t\t\t\tvalue = title;\n\t\t\t} else {\n\t\t\t\tvalue = tiddler.getFieldString(operator.operand);\n\t\t\t}\n\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\tvalues[value] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/each.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/eachday.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/eachday.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editiondescription.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/editiondescription.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editions.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/editions.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/field.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/field.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/fields.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/fields.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/get.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/get.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getindex.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/getindex.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/has.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand) || tiddler.fields[operator.operand] === \"\"))) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && tiddler.fields[operator.operand] !== \"\") {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/has.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/haschanged.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/haschanged.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/indexes.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerData(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/indexes.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/is/current.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/current.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/image.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/image.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/missing.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/missing.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/orphan.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/orphan.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/shadow.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/shadow.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/system.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/system.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tag.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/tag.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/tiddler.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tvar isFilterOperator = isFilterOperators[operator.operand];\n\tif(isFilterOperator) {\n\t\treturn isFilterOperator(source,operator.prefix,options);\n\t} else {\n\t\treturn [\"Filter Error: Unknown operand for the 'is' filter operator\"];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/is.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/limit.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/limit.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/links.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/links.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/list.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/list.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listed.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/listed.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listops.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
"title": "$:/core/modules/filters/listops.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/modules.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/modules.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/moduletypes.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/moduletypes.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/next.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/next.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/plugintiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerData(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/plugintiddlers.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/prefix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/prefix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/previous.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/previous.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/regexp.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/regexp.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removeprefix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/removeprefix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removesuffix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/removesuffix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sameday.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tvar isSameDay = function(dateField) {\n\t\t\treturn (new Date(dateField)).setHours(0,0,0,0) === targetDate;\n\t\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tif(isSameDay($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/sameday.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/search.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffix) {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: operator.suffix\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/search.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/shadowsource.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/shadowsource.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sort.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/sort.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/splitbefore.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/splitbefore.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/storyviews.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/storyviews.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/suffix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/suffix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tag.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && !tiddler.hasTag(operator.operand)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.hasTag(operator.operand)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/tag.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tagging.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/tagging.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tags.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\t$tw.utils.pushTop(results,tiddler.fields.tags);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/tags.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/title.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/title.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/untagged.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/untagged.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters.js": {
"text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar operator, operand, bracketPos, curlyBracketPos;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tvar nextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\t\t\t\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow \"Syntax error in filter expression\";\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [\"Filter error: \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter\",function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n",
"title": "$:/core/modules/filters.js",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/info/platform.js": {
"text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"title": "$:/core/modules/info/platform.js",
"type": "application/javascript",
"module-type": "info"
},
"$:/core/modules/language.js": {
"text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a single translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\nexports.Language = Language;\n\n})();\n",
"title": "$:/core/modules/language.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/macros/changecount.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
"title": "$:/core/modules/macros/changecount.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/contrastcolour.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB),\n\t\tbrightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
"title": "$:/core/modules/macros/contrastcolour.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/csvtiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
"title": "$:/core/modules/macros/csvtiddlers.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/dumpvariables.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/dumpvariables.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to dump all active variable values\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"dumpvariables\";\n\nexports.params = [\n];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\tvar output = [\"|!Variable |!Value |\"],\n\t\tvariables = [], variable;\n\tfor(variable in this.variables) {\n\t\tvariables.push(variable);\n\t}\n\tvariables.sort();\n\tfor(var index=0; index<variables.length; index++) {\n\t\tvar variable = variables[index];\n\t\toutput.push(\"|\" + variable + \" |<input size=50 value=<<\" + variable + \">>/> |\")\n\t}\n\treturn output.join(\"\\n\");\n};\n\n})();\n",
"title": "$:/core/modules/macros/dumpvariables.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter) {\n\tvar tiddlers = this.wiki.filterTiddlers(filter),\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"title": "$:/core/modules/macros/jsontiddlers.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/makedatauri.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert the content of a tiddler to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type) {\n\treturn $tw.utils.makeDataUri(text,type);\n};\n\n})();\n",
"title": "$:/core/modules/macros/makedatauri.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/now.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
"title": "$:/core/modules/macros/now.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/qualify.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
"title": "$:/core/modules/macros/qualify.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/resolvepath.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
"title": "$:/core/modules/macros/resolvepath.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/version.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
"title": "$:/core/modules/macros/version.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/parsers/audioparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/audioparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/csvparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/csvparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/htmlparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"sandbox\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/htmlparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/imageparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t\tif(type === \"application/pdf\" || type === \".pdf\") {\n\t\t\telement.tag = \"embed\";\n\t\t}\n\t} else if(text) {\n\t\tif(type === \"application/pdf\" || type === \".pdf\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t\t\telement.tag = \"embed\";\n\t\t} else if(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"application/pdf\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/imageparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/utils/parseutils.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar node = {\n\t\ttype: \"whitespace\",\n\t\tstart: pos\n\t};\n\tvar re = /(\\s)+/g;\n\tre.lastIndex = pos;\n\tvar match = re.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t}\n\treturn null;\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar whitespace = $tw.utils.parseWhiteSpace(source,pos);\n\tif(whitespace) {\n\t\treturn whitespace.end;\n\t}\n\treturn pos;\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for an indirect value\n\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\tif(indirectValue) {\n\t\t\t\tpos = indirectValue.end;\n\t\t\t\tnode.type = \"indirect\";\n\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for a unquoted value\n\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\tif(unquotedValue) {\n\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"title": "$:/core/modules/utils/parseutils.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/parsers/textparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/textparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/dash.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"–\" : \"—\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/entity.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: ©\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/extlink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: http://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|'\"\\\\^~]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/heading.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/html.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/html.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/image.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[http://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [http://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [http://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|http://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/image.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/list.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"p\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/list.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /(\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"macrodef\",\n\t\tname: this.match[1],\n\t\tparams: params,\n\t\ttext: text\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[http://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|http://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/rules.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/syslink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?\\$:[^\\s<|]+(?:[^\\s<|])/mg;\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
"title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/table.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/table.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/wikiparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\tthis.tree.push.apply(this.tree,this.parseInlineRun());\n\t} else {\n\t\tthis.tree.push.apply(this.tree,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar tree = [];\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t}\n\treturn tree;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t// Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,nextMatch.matchIndex)});\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\ttree.push({type: \"text\", text: this.source.substr(this.pos)});\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,terminatorMatch.index)});\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,inlineRuleMatch.matchIndex)});\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\ttree.push({type: \"text\", text: this.source.substr(this.pos)});\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/pluginswitcher.js": {
"text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
"title": "$:/core/modules/pluginswitcher.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/saver-handler.js": {
"text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tthis.numChanges = 0;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(callback) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\tcallback(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\twindow.onbeforeunload = function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t};\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\",\n\t\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert(\"Error while saving:\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
"title": "$:/core/modules/saver-handler.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/savers/andtidwiki.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t// Strip the file://\n\tif(pathname.indexOf(\"file://\") === 0) {\n\t\tpathname = pathname.substr(7);\n\t}\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Save the file\n\twindow.twi.saveFile(pathname,text);\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/andtidwiki.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/download.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\tfilename = document.location.pathname.substr(p+1);\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tlink.setAttribute(\"target\",\"_blank\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/download.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/fsosaver.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/fsosaver.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/manualdownload.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/manualdownload.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/msdownload.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/msdownload.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyfox.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/tiddlyfox.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyie.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/tiddlyie.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/twedit.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback(\"Error saving to TWEdit: \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
"title": "$:/core/modules/savers/twedit.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/upload.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; ;charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback(\"Error:\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/upload.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/browser-messaging.js": {
"text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\"),\n\t\t\tiframeInfo = {\n\t\t\t\turl: url,\n\t\t\t\tstatus: \"loading\",\n\t\t\t\tdomNode: iframe\n\t\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert(\"Error loading plugin library: \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert(\"Error loading plugin library: \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\tconsole.log(\"browser-messaging: \",document.location.toString())\n\t\tconsole.log(\"browser-messaging: Received message from\",event.origin);\n\t\tconsole.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
"title": "$:/core/modules/browser-messaging.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/commands.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
"title": "$:/core/modules/startup/commands.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/favicon.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\n\t}\n}\n\n})();\n",
"title": "$:/core/modules/startup/favicon.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/info.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin\n\tvar fields = {\n\t\ttitle: \"$:/temp/info-plugin\",\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo();\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
"title": "$:/core/modules/startup/info.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/load-modules.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
"title": "$:/core/modules/startup/load-modules.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/password.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
"title": "$:/core/modules/startup/password.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/render.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n\t})();\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only drafts have changed\n\t\tvar onlyDraftsHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !tiddler.hasField(\"draft.of\")) {\n\t\t\t\tonlyDraftsHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyDraftsHaveChanged) {\n\t\t\ttimerId = setTimeout(refresh,DRAFT_TIDDLER_TIMEOUT);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n};\n\n})();\n",
"title": "$:/core/modules/startup/render.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/rootwidget.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the notification mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param);\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tif(document[fullscreen._fullscreenElement]) {\n\t\t\t\tdocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tdocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/startup/rootwidget.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup.js": {
"text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION = false;\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t}\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance(PERFORMANCE_INSTRUMENTATION);\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-US\"\n\t\t]\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget = new widget.widget({\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},{\n\t\t\twiki: $tw.wiki,\n\t\t\tdocument: document\n\t\t});\n\t}\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t} \n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({wiki: $tw.wiki, dirtyTracking: !$tw.syncadaptor});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/startup.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/story.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers();\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: \"permalink\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: \"permaview\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle\n\t\t\t});\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t//invoke any hooks that might change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// If a target tiddler was specified add it to the history stack\n\tif(target && target !== \"\") {\n\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t}\n\t\t$tw.wiki.addToHistory(target);\n\t} else if(storyList.length > 0) {\n\t\t$tw.wiki.addToHistory(storyList[0]);\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\tif(options.updateAddressBar !== \"no\") {\n\t\t// Get the story and the history stack\n\t\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\t\ttargetTiddler = \"\";\n\t\tif(options.targetTiddler) {\n\t\t\ttargetTiddler = options.targetTiddler;\n\t\t} else {\n\t\t\t// The target tiddler is the one at the top of the stack\n\t\t\tif(historyList.length > 0) {\n\t\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t\t}\n\t\t\t// Blank the target tiddler if it isn't present in the story\n\t\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\t\ttargetTiddler = \"\";\n\t\t\t}\n\t\t}\n\t\t// Assemble the location hash\n\t\tif(options.updateAddressBar === \"permalink\") {\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t} else {\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t}\n\t\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\t\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\t\tif(options.updateHistory === \"yes\") {\n\t\t\t\t// Assign the location hash so that history is updated\n\t\t\t\twindow.location.hash = $tw.locationHash;\n\t\t\t} else {\n\t\t\t\t// We use replace so that browser history isn't affected\n\t\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t\t}\n\t\t}\n\t}\n}\n\n})();\n",
"title": "$:/core/modules/startup/story.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/storyviews/classic.js": {
"text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar currWidth = targetElement.offsetWidth,\n\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Remove the dom nodes of the widget at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"translateX(0px)\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
"title": "$:/core/modules/storyviews/classic.js",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/pop.js": {
"text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
"title": "$:/core/modules/storyviews/pop.js",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/zoomin.js": {
"text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerData(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();",
"title": "$:/core/modules/storyviews/zoomin.js",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/syncer.js": {
"text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store. If a syncadaptor is used then individual tiddlers are synchronised through it. If there is no syncadaptor then the entire wiki is saved via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.syncadaptor = options.syncadaptor;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\"));\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\t// Tasks are {type: \"load\"/\"save\"/\"delete\", title:, queueTime:, lastModificationTime:}\n\tthis.taskQueue = {}; // Hashmap of tasks yet to be performed\n\tthis.taskInProgress = {}; // Hash of tasks in progress\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.syncToServer(changes);\n\t});\n\t// Browser event handlers\n\tif($tw.browser) {\n\t\t// Set up our beforeunload handler\n\t\twindow.onbeforeunload = function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t};\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\tself.handleLazyLoadEvent(title);\n\t});\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nConstants\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.filterFn.call(this.wiki);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: tiddler.fields.revision,\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t};\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\treturn (this.numTasksInQueue() > 0) || (this.numTasksInProgress() > 0);\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(this.wiki.getTiddler(tiddlerFields.title),tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: tiddlerFields.revision,\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Set the various status tiddlers\n\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\tif(isLoggedIn) {\n\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t} else {\n\t\t\t\tself.wiki.deleteTiddler(self.titleUserName);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tif(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tvar self = this;\n\t\tif(this.pollTimerId) {\n\t\t\tclearTimeout(this.pollTimerId);\n\t\t\tthis.pollTimerId = null;\n\t\t}\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\t// Trigger the next sync\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(\"Error retrieving skinny tiddler list:\",err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null;\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Do a full load if we've already got a fat version of the tiddler\n\t\t\t\t\tif(tiddler && tiddler.fields.text !== undefined) {\n\t\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\t\tself.enqueueSyncTask({\n\t\t\t\t\t\t\ttype: \"load\",\n\t\t\t\t\t\t\ttitle: tiddlerFields.title\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Load the skinny version of the tiddler\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nSynchronise a set of changes to the server\n*/\nSyncer.prototype.syncToServer = function(changes) {\n\tvar self = this,\n\t\tnow = Date.now(),\n\t\tfilteredChanges = this.filterFn.call(this.wiki,function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t$tw.utils.each(changes,function(change,title,object) {\n\t\t// Process the change if it is a deletion of a tiddler we're already syncing, or is on the filtered change list\n\t\tif((change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) || filteredChanges.indexOf(title) !== -1) {\n\t\t\t// Queue a task to sync this tiddler\n\t\t\tself.enqueueSyncTask({\n\t\t\t\ttype: change.deleted ? \"delete\" : \"save\",\n\t\t\t\ttitle: title\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Queue up a sync task to load this tiddler\n\tthis.enqueueSyncTask({\n\t\ttype: \"load\",\n\t\ttitle: title\n\t});\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: \"Login to TiddlySpace\",\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(null,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nQueue up a sync task. If there is already a pending task for the tiddler, just update the last modification time\n*/\nSyncer.prototype.enqueueSyncTask = function(task) {\n\tvar self = this,\n\t\tnow = Date.now();\n\t// Set the timestamps on this task\n\ttask.queueTime = now;\n\ttask.lastModificationTime = now;\n\t// Fill in some tiddlerInfo if the tiddler is one we haven't seen before\n\tif(!$tw.utils.hop(this.tiddlerInfo,task.title)) {\n\t\tthis.tiddlerInfo[task.title] = {\n\t\t\trevision: null,\n\t\t\tadaptorInfo: {},\n\t\t\tchangeCount: -1\n\t\t};\n\t}\n\t// Bail if this is a save and the tiddler is already at the changeCount that the server has\n\tif(task.type === \"save\" && this.wiki.getChangeCount(task.title) <= this.tiddlerInfo[task.title].changeCount) {\n\t\treturn;\n\t}\n\t// Check if this tiddler is already in the queue\n\tif($tw.utils.hop(this.taskQueue,task.title)) {\n\t\t// this.logger.log(\"Re-queueing up sync task with type:\",task.type,\"title:\",task.title);\n\t\tvar existingTask = this.taskQueue[task.title];\n\t\t// If so, just update the last modification time\n\t\texistingTask.lastModificationTime = task.lastModificationTime;\n\t\t// If the new task is a save then we upgrade the existing task to a save. Thus a pending load is turned into a save if the tiddler changes locally in the meantime. But a pending save is not modified to become a load\n\t\tif(task.type === \"save\" || task.type === \"delete\") {\n\t\t\texistingTask.type = task.type;\n\t\t}\n\t} else {\n\t\t// this.logger.log(\"Queuing up sync task with type:\",task.type,\"title:\",task.title);\n\t\t// If it is not in the queue, insert it\n\t\tthis.taskQueue[task.title] = task;\n\t\tthis.updateDirtyStatus();\n\t}\n\t// Process the queue\n\t$tw.utils.nextTick(function() {self.processTaskQueue.call(self);});\n};\n\n/*\nReturn the number of tasks in progress\n*/\nSyncer.prototype.numTasksInProgress = function() {\n\treturn $tw.utils.count(this.taskInProgress);\n};\n\n/*\nReturn the number of tasks in the queue\n*/\nSyncer.prototype.numTasksInQueue = function() {\n\treturn $tw.utils.count(this.taskQueue);\n};\n\n/*\nTrigger a timeout if one isn't already outstanding\n*/\nSyncer.prototype.triggerTimeout = function() {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},self.taskTimerInterval);\n\t}\n};\n\n/*\nProcess the task queue, performing the next task if appropriate\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if we're not already performing a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif(this.numTasksInProgress() === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(task) {\n\t\t\t// Remove the task from the queue and add it to the in progress list\n\t\t\tdelete this.taskQueue[task.title];\n\t\t\tthis.taskInProgress[task.title] = task;\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// Dispatch the task\n\t\t\tthis.dispatchTask(task,function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\tself.logger.alert(\"Sync error while processing '\" + task.title + \"':\\n\" + err);\n\t\t\t\t}\n\t\t\t\t// Mark that this task is no longer in progress\n\t\t\t\tdelete self.taskInProgress[task.title];\n\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t// Process the next task\n\t\t\t\tself.processTaskQueue.call(self);\n\t\t\t});\n\t\t} else {\n\t\t\t// Make sure we've set a time if there wasn't a task to perform, but we've still got tasks in the queue\n\t\t\tif(this.numTasksInQueue() > 0) {\n\t\t\t\tthis.triggerTimeout();\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nChoose the next applicable task\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar self = this,\n\t\tcandidateTask = null,\n\t\tnow = Date.now();\n\t// Select the best candidate task\n\t$tw.utils.each(this.taskQueue,function(task,title) {\n\t\t// Exclude the task if there's one of the same name in progress\n\t\tif($tw.utils.hop(self.taskInProgress,title)) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is a save and the tiddler has been modified recently, but not hit the fallback time\n\t\tif(task.type === \"save\" && (now - task.lastModificationTime) < self.throttleInterval &&\n\t\t\t(now - task.queueTime) < self.fallbackInterval) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is newer than the current best candidate\n\t\tif(candidateTask && candidateTask.queueTime < task.queueTime) {\n\t\t\treturn;\n\t\t}\n\t\t// Now this is our best candidate\n\t\tcandidateTask = task;\n\t});\n\treturn candidateTask;\n};\n\n/*\nDispatch a task and invoke the callback\n*/\nSyncer.prototype.dispatchTask = function(task,callback) {\n\tvar self = this;\n\tif(task.type === \"save\") {\n\t\tvar changeCount = this.wiki.getChangeCount(task.title),\n\t\t\ttiddler = this.wiki.getTiddler(task.title);\n\t\tthis.logger.log(\"Dispatching 'save' task:\",task.title);\n\t\tif(tiddler) {\n\t\t\tthis.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\t// Adjust the info stored about this tiddler\n\t\t\t\tself.tiddlerInfo[task.title] = {\n\t\t\t\t\tchangeCount: changeCount,\n\t\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\t\trevision: revision\n\t\t\t\t};\n\t\t\t\t// Invoke the callback\n\t\t\t\tcallback(null);\n\t\t\t},{\n\t\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t\t});\n\t\t} else {\n\t\t\tthis.logger.log(\" Not Dispatching 'save' task:\",task.title,\"tiddler does not exist\");\n\t\t\treturn callback(null);\n\t\t}\n\t} else if(task.type === \"load\") {\n\t\t// Load the tiddler\n\t\tthis.logger.log(\"Dispatching 'load' task:\",task.title);\n\t\tthis.syncadaptor.loadTiddler(task.title,function(err,tiddlerFields) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Store the tiddler\n\t\t\tif(tiddlerFields) {\n\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t});\n\t} else if(task.type === \"delete\") {\n\t\t// Delete the tiddler\n\t\tthis.logger.log(\"Dispatching 'delete' task:\",task.title);\n\t\tthis.syncadaptor.deleteTiddler(task.title,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tdelete self.tiddlerInfo[task.title];\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t});\n\t}\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
"title": "$:/core/modules/syncer.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/tiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = [];\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields.push(field + \": \" + this.getFieldString(field));\n\t\t\t}\n\t\t}\n\t}\n\treturn fields.join(\"\\n\");\n};\n\n/*\nCompare two tiddlers for equality\ntiddler: the tiddler to compare\nexcludeFields: array of field names to exclude from the comparison\n*/\nexports.isEqual = function(tiddler,excludeFields) {\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\treturn false;\n\t}\n\texcludeFields = excludeFields || [];\n\tvar self = this,\n\t\tdifferences = []; // Fields that have differences\n\t// Add to the differences array\n\tfunction addDifference(fieldName) {\n\t\t// Check for this field being excluded\n\t\tif(excludeFields.indexOf(fieldName) === -1) {\n\t\t\t// Save the field as a difference\n\t\t\t$tw.utils.pushTop(differences,fieldName);\n\t\t}\n\t}\n\t// Returns true if the two values of this field are equal\n\tfunction isFieldValueEqual(fieldName) {\n\t\tvar valueA = self.fields[fieldName],\n\t\t\tvalueB = tiddler.fields[fieldName];\n\t\t// Check for identical string values\n\t\tif(typeof(valueA) === \"string\" && typeof(valueB) === \"string\" && valueA === valueB) {\n\t\t\treturn true;\n\t\t}\n\t\t// Check for identical array values\n\t\tif($tw.utils.isArray(valueA) && $tw.utils.isArray(valueB) && $tw.utils.isArrayEqual(valueA,valueB)) {\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise the fields must be different\n\t\treturn false;\n\t}\n\t// Compare our fields\n\tfor(var fieldName in this.fields) {\n\t\tif(!isFieldValueEqual(fieldName)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// There's a difference for every field in the other tiddler that we don't have\n\tfor(fieldName in tiddler.fields) {\n\t\tif(!(fieldName in this.fields)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// Return whether there were any differences\n\treturn differences.length === 0;\n};\n\n})();\n",
"title": "$:/core/modules/tiddler.js",
"type": "application/javascript",
"module-type": "tiddlermethod"
},
"$:/core/modules/upgraders/plugins.js": {
"text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"] && incomingTiddler.version) {\n\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"title": "$:/core/modules/upgraders/plugins.js",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/system.js": {
"text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"title": "$:/core/modules/upgraders/system.js",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/themetweaks.js": {
"text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerData(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"title": "$:/core/modules/upgraders/themetweaks.js",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/utils/crypto.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/utils/crypto.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/animations/slide.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
"title": "$:/core/modules/utils/dom/animations/slide.js",
"type": "application/javascript",
"module-type": "animation"
},
"$:/core/modules/utils/dom/animator.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
"title": "$:/core/modules/utils/dom/animator.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/browser.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif(document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/utils/dom/browser.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/csscolorparser.js": {
"text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
"title": "$:/core/modules/utils/dom/csscolorparser.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t}\n\tel.className = c.join(\" \");\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function() {\n\tif(\"scrollX\" in window) {\n\t\treturn {x: window.scrollX, y: window.scrollY};\n\t} else {\n\t\treturn {x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop};\n\t}\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\ttry {\n\t\tif(window.localStorage) {\n\t\t\tlocalStorage.setItem(\"tw5-password-\" + name,password);\n\t\t}\n\t} catch(e) {\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\ttry {\n\t\treturn window.localStorage ? localStorage.getItem(\"tw5-password-\" + name) : \"\";\n\t} catch(e) {\n\t\treturn \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n\n})();\n",
"title": "$:/core/modules/utils/dom.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/http.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data)\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tdata = results.join(\"&\");\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this.responseText,this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback(\"XMLHttpRequest error code: \" + this.status);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,options.url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\trequest.send(data);\n\treturn request;\n};\n\n})();\n",
"title": "$:/core/modules/utils/dom/http.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/keyboard.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"enter\": 13,\n\t\"escape\": 27\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nexports.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(\"+\"),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase();\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(namedKeys[s]) {\n\t\t\tinfo.keyCode = namedKeys[s];\n\t\t}\n\t}\n\treturn info;\n};\n\nexports.checkKeyDescriptor = function(event,keyInfo) {\n\tvar metaKeyStatus = !!keyInfo.metaKey; // Using a temporary variable to keep JSHint happy\n\treturn event.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === metaKeyStatus;\t\n};\n\n})();\n",
"title": "$:/core/modules/utils/dom/keyboard.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/modal.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = document.createElement(\"div\"),\n\t\tmodalBackdrop = document.createElement(\"div\"),\n\t\tmodalWrapper = document.createElement(\"div\"),\n\t\tmodalHeader = document.createElement(\"div\"),\n\t\theaderTitle = document.createElement(\"h3\"),\n\t\tmodalBody = document.createElement(\"div\"),\n\t\tmodalLink = document.createElement(\"a\"),\n\t\tmodalFooter = document.createElement(\"div\"),\n\t\tmodalFooterHelp = document.createElement(\"span\"),\n\t\tmodalFooterButtons = document.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t});\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables\n\t});\n\tbodyWidgetNode.render(modalBody,null);\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t});\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(document.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler && tiddler.fields && tiddler.fields.help) {\n\t\tvar link = document.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.appendChild(document.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: \"Close\"\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t});\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + window.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\twindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tdocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tdocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tif($tw.pageContainer) {\n\t\t$tw.utils.toggleClass($tw.pageContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
"title": "$:/core/modules/utils/dom/modal.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/notifier.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar notification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{parentWidget: $tw.rootWidget, document: document});\n\twidgetNode.render(notification,null);\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t});\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
"title": "$:/core/modules/utils/dom/notifier.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/popup.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === options.title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\t// Store the popup details\n\tthis.popups.push({\n\t\ttitle: options.title,\n\t\twiki: options.wiki,\n\t\tdomNode: options.domNode\n\t});\n\t// Set the state tiddler\n\toptions.wiki.setTextReference(options.title,\n\t\t\t\"(\" + options.domNode.offsetLeft + \",\" + options.domNode.offsetTop + \",\" + \n\t\t\t\toptions.domNode.offsetWidth + \",\" + options.domNode.offsetHeight + \")\");\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
"title": "$:/core/modules/utils/dom/popup.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/scroller.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\t// Now get ready to scroll the body\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = $tw.utils.getScrollPosition();\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar clientBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\ttop: clientBounds.top + scrollPosition.y,\n\t\t\twidth: clientBounds.width,\n\t\t\theight: clientBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t// targetPos/targetSize - position and size of the target element\n\t// currentPos/currentSize - position and size of the current scroll viewport\n\t// returns: new position of the scroll viewport\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to it's top/left\n\t\t\tif(targetPos <= currentPos) {\n\t\t\t\tnewPos = targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\tnewPos = targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\tnewPos = targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\tnewPos = currentPos;\n\t\t\t}\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,window.innerWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,window.innerHeight);\n\t// Only scroll if the position has changed\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\twindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
"title": "$:/core/modules/utils/dom/scroller.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/edition-info.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
"title": "$:/core/modules/utils/edition-info.js",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/fakedom.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text;\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis.style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value;\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this.style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this.style) {\n\t\t\t\tstyle.push(s + \":\" + this.style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\")\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tthrow \"Cannot get textContent on a raw TW_Element\";\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tthrow \"Cannot get formattedTextContent on a raw TW_Element\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
"title": "$:/core/modules/utils/fakedom.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/filesystem.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = new Buffer(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n})();\n",
"title": "$:/core/modules/utils/filesystem.js",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/logger.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName) {\n\tthis.componentName = componentName || \"\";\n}\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tif(console !== undefined && console.log !== undefined) {\n\t\treturn Function.apply.call(console.log, console, [this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)));\n\t}\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\t// Prepare the text of the alert\n\tvar text = Array.prototype.join.call(arguments,\" \");\n\t// Create alert tiddlers in the browser\n\tif($tw.browser) {\n\t\t// Check if there is an existing alert with the same text and the same component\n\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\talertFields,\n\t\t\texistingCount,\n\t\t\tself = this;\n\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t}\n\t\t});\n\t\tif(alertFields) {\n\t\t\texistingCount = alertFields.count || 1;\n\t\t} else {\n\t\t\talertFields = {\n\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\ttext: text,\n\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\tcomponent: this.componentName\n\t\t\t};\n\t\t\texistingCount = 0;\n\t\t}\n\t\talertFields.modified = new Date();\n\t\tif(++existingCount > 1) {\n\t\t\talertFields.count = existingCount;\n\t\t} else {\n\t\t\talertFields.count = undefined;\n\t\t}\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t// Log the alert as well\n\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t} else {\n\t\t// Print an orange message to the console if not in the browser\n\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
"title": "$:/core/modules/utils/logger.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/parsetree.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n})();\n",
"title": "$:/core/modules/utils/parsetree.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/performance.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap of current values of measurements\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n}\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tself.measures = {};\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime) + \"ms\");\n\t\t\tfor(var m in self.measures) {\n\t\t\t\tself.logger.log(\"+\" + m + \": \" + self.measures[m] + \"ms\");\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments),\n\t\t\t\tvalue = self.measures[name] || 0;\n\t\t\tself.measures[name] = value + $tw.utils.timer(startTime);\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
"title": "$:/core/modules/utils/performance.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/pluginmaker.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\nError: \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
"title": "$:/core/modules/utils/pluginmaker.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/utils.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\tconsole.log($tw.node ? \"\\x1b[1;33m\" + text + \"\\x1b[0m\" : text);\n}\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\tvar s = 0;\n\t$tw.utils.each(object,function() {s++;});\n\treturn s;\n};\n\n/*\nCheck if an array is equal by value and by reference.\n*/\nexports.isArrayEqual = function(array1,array2) {\n\tif(array1 === array2) {\n\t\treturn true;\n\t}\n\tarray1 = array1 || [];\n\tarray2 = array2 || [];\n\tif(array1.length !== array2.length) {\n\t\treturn false;\n\t}\n\treturn array1.every(function(value,index) {\n\t\treturn value === array2[index];\n\t});\n};\n\n/*\nPush entries onto an array, removing them first if they already exist in the array\n\tarray: array to modify (assumed to be free of duplicates)\n\tvalue: a single value to push or an array of values to push\n*/\nexports.pushTop = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\t// Remove any array entries that are duplicated in the new values\n\t\tif(value.length !== 0) {\n\t\t\tif(array.length !== 0) {\n\t\t\t\tif(value.length < array.length) {\n\t\t\t\t\tfor(t=0; t<value.length; t++) {\n\t\t\t\t\t\tp = array.indexOf(value[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(p,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor(t=array.length-1; t>=0; t--) {\n\t\t\t\t\t\tp = value.indexOf(array[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(t,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Push the values on top of the main array\n\t\t\tarray.push.apply(array,value);\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t\tarray.push(value);\n\t}\n\treturn array;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call();\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar n = Math.floor((dt.getTime()-new Date(dt.getFullYear(),0,1) + 3600000) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\", duration: 365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\", duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\", duration: 24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\", duration: 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration: 60 * 1000},\n\t\t{name: \"Seconds\", duration: 1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&\", < to \"<\", > to \">\", \" to \""\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&\").replace(/</mg,\"<\").replace(/>/mg,\">\").replace(/\\\"/mg,\""\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar e = s.substr(1,s.length-2); // Strip the & and the ;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\treturn String.fromCharCode(parseInt(e.substr(2),16));\t\n\t\t} else {\n\t\t\treturn String.fromCharCode(parseInt(e.substr(1),10));\n\t\t}\n\t} else {\n\t\tvar c = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn String.fromCharCode(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/'/g, \"\\\\'\") // single quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/[\\x80-\\uFFFF]/g, exports.escape); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|'\"\\\\^~]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10);\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\tif($tw.browser) {\n\t\t// TODO\n\t\tthrow \"$tw.utils.base64Decode() doesn't work in the browser\";\n\t} else {\n\t\treturn (new Buffer(string64,\"base64\")).toString();\n\t}\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\t\t\n\t\tm = r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tparts.push(\"data:\");\n\tparts.push(type);\n\tparts.push(isBase64 ? \";base64\" : \"\");\n\tparts.push(\",\");\n\tparts.push(isBase64 ? text : encodeURIComponent(text));\n\treturn parts.join(\"\");\n};\n\n})();",
"title": "$:/core/modules/utils/utils.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/widgets/action-deletefield.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {};\n\tif(this.actionField) {\n\t\tremoveFields[this.actionField] = undefined;\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t}\n\t\t});\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,removeFields));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-deletefield.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletetiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-deletetiddler.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-navigate.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-navigate.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-sendmessage.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$message\"] || changedAttributes[\"$param\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Dispatch the message\n\tthis.dispatchEvent({type: this.actionMessage, param: param, paramObject: paramObject, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-sendmessage.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-setfield.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this;\n\tif(typeof this.actionValue === \"string\") {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue);\t\t\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-setfield.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/browse.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,function(tiddlerFieldsArray) {\n\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/browse.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/button.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"button\");\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = this.popup && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif(this.set && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(this,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n}\n\nButtonWidget.prototype.isSelected = function() {\n\tvar tiddler = this.wiki.getTiddler(this.set);\n\treturn tiddler ? tiddler.fields.text === this.setTo : this.defaultSetValue === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1)\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\t$tw.popup.triggerPopup({\n\t\tdomNode: this.domNodes[0],\n\t\ttitle: this.popup,\n\t\twiki: this.wiki\n\t});\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup])) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/button.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/checkbox.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value = tiddler.fields[this.checkboxField] || this.checkboxDefault || \"\";\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false;\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tiddler.hasTag(this.checkboxTag) !== checked)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tvar value = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.field || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/checkbox.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/codeblock.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/codeblock.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/count.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = undefined;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/count.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/dropzone.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = \"tc-dropzone\";\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"}\n\t]);\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nDropZoneWidget.prototype.enterDrag = function() {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// We count enter/leave events\n\tthis.dragEnterCount = (this.dragEnterCount || 0) + 1;\n\t// If we're entering for the first time we need to apply highlighting\n\tif(this.dragEnterCount === 1) {\n\t\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.leaveDrag = function() {\n\t// Reduce the enter count\n\tthis.dragEnterCount = (this.dragEnterCount || 0) - 1;\n\t// Remove highlighting if we're leaving externally\n\tif(this.dragEnterCount <= 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent = function(event) {\n\tthis.enterDrag();\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag();\n};\n\nDropZoneWidget.prototype.handleDropEvent = function(event) {\n\tthis.leaveDrag();\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Reset the enter count\n\tthis.dragEnterCount = 0;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = this.wiki.readFiles(dataTransfer.files,function(tiddlerFieldsArray) {\n\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t});\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\tthis.importData(dataTransfer);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.importData = function(dataTransfer) {\n\t// Try each provided data type in turn\n\tfor(var t=0; t<this.importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || this.importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = this.importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.convertToFields(data);\n\t\t\t\tif(!tiddlerFields.title) {\n\t\t\t\t\ttiddlerFields.title = this.wiki.generateNewTitle(\"Untitled\");\n\t\t\t\t}\n\t\t\t\tthis.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields])});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nDropZoneWidget.prototype.importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, convertToFields: function(data) {\n\t\treturn JSON.parse(data);\n\t}},\n\t{type: \"URL\", IECompatible: true, convertToFields: function(data) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn JSON.parse(match[1]);\n\t\t} else {\n\t\t\treturn { // As URL string\n\t\t\t\ttext: data\n\t\t\t};\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, convertToFields: function(data) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn JSON.parse(match[1]);\n\t\t} else {\n\t\t\treturn { // As URL string\n\t\t\t\ttext: data\n\t\t\t};\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, convertToFields: function(data) {\n\t\treturn {\n\t\t\ttext: data\n\t\t};\n\t}},\n\t{type: \"text/plain\", IECompatible: false, convertToFields: function(data) {\n\t\treturn {\n\t\t\ttext: data\n\t\t};\n\t}},\n\t{type: \"Text\", IECompatible: true, convertToFields: function(data) {\n\t\treturn {\n\t\t\ttext: data\n\t\t};\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, convertToFields: function(data) {\n\t\treturn {\n\t\t\ttext: data\n\t\t};\n\t}}\n];\n\nDropZoneWidget.prototype.handlePasteEvent = function(event) {\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields])});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/dropzone.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-binary.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Construct the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"transclude\",\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t}\n\t}]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/edit-binary.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-bitmap.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 300,\n\tDEFAULT_IMAGE_HEIGHT = 185;\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our element\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\tthis.widthDomNode = $tw.utils.domMaker(\"input\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor-width\",\n\t\teventListeners: [{\n\t\t\tname: \"change\", handlerObject: this, handlerMethod: \"handleWidthChangeEvent\"\n\t\t}]\n\t});\n\tthis.heightDomNode = $tw.utils.domMaker(\"input\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor-height\",\n\t\teventListeners: [{\n\t\t\tname: \"change\", handlerObject: this, handlerMethod: \"handleHeightChangeEvent\"\n\t\t}]\n\t});\n\t// Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tparent.insertBefore(this.widthDomNode,nextSibling);\n\tparent.insertBefore(this.heightDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode,this.widthDomNode,this.heightDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n};\n\n/*\nNote that the bitmap editor intentionally doesn't try to refresh itself because it would be confusing to have the image changing spontaneously while editting it\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.updateSize();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.updateSize();\n\t};\n\t// Get the current bitmap into an image object\n\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Update the input boxes with the actual size of the canvas\n*/\nEditBitmapWidget.prototype.updateSize = function() {\n\tthis.widthDomNode.value = this.currCanvas.width;\n\tthis.heightDomNode.value = this.currCanvas.height;\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleWidthChangeEvent = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(this.widthDomNode.value,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newWidth !== this.currCanvas.width) {\n\t\tthis.changeCanvasSize(newWidth,this.currCanvas.height);\n\t}\n\t// Update the input controls\n\tthis.updateSize();\n};\n\nEditBitmapWidget.prototype.handleHeightChangeEvent = function(event) {\n\t// Get the new width\n\tvar newHeight = parseInt(this.heightDomNode.value,10);\n\t// Update if necessary\n\tif(newHeight > 0 && newHeight !== this.currCanvas.height) {\n\t\tthis.changeCanvasSize(this.currCanvas.width,newHeight);\n\t}\n\t// Update the input controls\n\tthis.updateSize();\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseInt(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"),10);\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\tif(tiddler) {\n\t\t// data URIs look like \"data:<type>;base64,<text>\"\n\t\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type,1.0),\n\t\t\tposColon = dataURL.indexOf(\":\"),\n\t\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\t\tposComma = dataURL.indexOf(\",\"),\n\t\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\t\ttext = dataURL.substring(posComma+1);\n\t\tvar update = {type: type, text: text};\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,update));\n\t}\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/edit-bitmap.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-text.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditTextWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditTextWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our element\n\tvar editInfo = this.getEditInfo(),\n\t\ttag = this.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tif(this.editType) {\n\t\tdomNode.setAttribute(\"type\",this.editType);\n\t}\n\tif(editInfo.value === \"\" && this.editPlaceholder) {\n\t\tdomNode.setAttribute(\"placeholder\",this.editPlaceholder);\n\t}\n\tif(this.editSize) {\n\t\tdomNode.setAttribute(\"size\",this.editSize);\n\t}\n\t// Assign classes\n\tif(this.editClass) {\n\t\tdomNode.className = this.editClass;\n\t}\n\t// Set the text\n\tif(this.editTag === \"textarea\") {\n\t\tdomNode.appendChild(this.document.createTextNode(editInfo.value));\n\t} else {\n\t\tdomNode.value = editInfo.value;\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n\t// Fix height\n\tthis.fixHeight();\n\t// Focus field\n\tif(this.editFocus === \"true\") {\n\t\tif(domNode.focus && domNode.select) {\n\t\t\tdomNode.focus();\n\t\t\tdomNode.select();\t\t\t\n\t\t}\n\t}\n};\n\n/*\nGet the tiddler being edited and current value\n*/\nEditTextWidget.prototype.getEditInfo = function() {\n\t// Get the edit value\n\tvar self = this,\n\t\tvalue,\n\t\tupdate;\n\tif(this.editIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\tupdate = function(value) {\n\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// Get the current tiddler and the field name\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t} else {\n\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\tswitch(this.editField) {\n\t\t\t\tcase \"text\":\n\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"title\":\n\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = \"\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\tvalue = this.editDefault;\n\t\t\t}\n\t\t}\n\t\tupdate = function(value) {\n\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\tupdateFields = {\n\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t};\n\t\t\tupdateFields[self.editField] = value;\n\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t};\n\t}\n\treturn {value: value, update: update};\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditTextWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editDefault = this.getAttribute(\"default\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editSize = this.getAttribute(\"size\");\n\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",\"yes\") === \"yes\";\n\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\tthis.editFocus = this.getAttribute(\"focus\");\n\t// Get the editor element tag and type\n\tvar tag,type;\n\tif(this.editField === \"text\") {\n\t\ttag = \"textarea\";\n\t} else {\n\t\ttag = \"input\";\n\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\ttag = fieldModule.editTag;\n\t\t}\n\t\tif(fieldModule && fieldModule.editType) {\n\t\t\ttype = fieldModule.editType;\n\t\t}\n\t\ttype = type || \"text\";\n\t}\n\t// Get the rest of our parameters\n\tthis.editTag = this.getAttribute(\"tag\",tag);\n\tthis.editType = this.getAttribute(\"type\",type);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Completely rerender if any of our attributes have changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.editTitle]) {\n\t\tthis.updateEditor(this.getEditInfo().value);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n/*\nUpdate the editor with new text. This method is separate from updateEditorDomNode()\nso that subclasses can override updateEditor() and still use updateEditorDomNode()\n*/\nEditTextWidget.prototype.updateEditor = function(text) {\n\tthis.updateEditorDomNode(text);\n};\n\n/*\nUpdate the editor dom node with new text\n*/\nEditTextWidget.prototype.updateEditorDomNode = function(text) {\n\t// Replace the edit value if the tiddler we're editing has changed\n\tvar domNode = this.domNodes[0];\n\tif(!domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.document.activeElement !== domNode) {\n\t\t\tdomNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nFix the height of textareas to fit their content\n*/\nEditTextWidget.prototype.fixHeight = function() {\n\tvar self = this,\n\t\tdomNode = this.domNodes[0];\n\tif(this.editAutoHeight && domNode && !domNode.isTiddlyWikiFakeDom && this.editTag === \"textarea\") {\n\t\t// Resize the textarea to fit its content, preserving scroll position\n\t\tvar scrollPosition = $tw.utils.getScrollPosition(),\n\t\t\tscrollTop = scrollPosition.y;\n\t\t// Measure the specified minimum height\n\t\tdomNode.style.height = self.editMinHeight;\n\t\tvar minHeight = domNode.offsetHeight;\n\t\t// Set its height to auto so that it snaps to the correct height\n\t\tdomNode.style.height = \"auto\";\n\t\t// Calculate the revised height\n\t\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,minHeight);\n\t\t// Only try to change the height if it has changed\n\t\tif(newHeight !== domNode.offsetHeight) {\n\t\t\tdomNode.style.height = newHeight + \"px\";\n\t\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t\t$tw.utils.forceLayout(domNode);\n\t\t\t// Check that the scroll position is still visible before trying to scroll back to it\n\t\t\tscrollTop = Math.min(scrollTop,self.document.body.scrollHeight - window.innerHeight);\n\t\t\twindow.scrollTo(scrollPosition.x,scrollTop);\n\t\t}\n\t}\n};\n\n/*\nHandle a dom \"input\" event\n*/\nEditTextWidget.prototype.handleInputEvent = function(event) {\n\tthis.saveChanges(this.domNodes[0].value);\n\tthis.fixHeight();\n\treturn true;\n};\n\nEditTextWidget.prototype.handleFocusEvent = function(event) {\n\tif(this.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.editFocusPopup,\n\t\t\twiki: this.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\nEditTextWidget.prototype.saveChanges = function(text) {\n\tvar editInfo = this.getEditInfo();\n\tif(text !== editInfo.value) {\n\t\teditInfo.update(text);\n\t}\n};\n\nexports[\"edit-text\"] = EditTextWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/edit-text.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder}\n\t\t}\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/edit.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/element.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\tvar domNode = this.document.createElementNS(this.namespace,tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.parseTreeNode.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/element.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/encrypt.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/encrypt.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/entity.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar textNode = this.document.createTextNode($tw.utils.entityDecode(this.parseTreeNode.entity));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/entity.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fieldmangler.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle);\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tvar modification = this.wiki.getModificationFields();\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle);\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tvar modification = this.wiki.getModificationFields();\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/fieldmangler.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fields.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t// Get the exclusion list\n\tvar exclude;\n\tif(this.exclude) {\n\t\texclude = this.exclude.split(\" \");\n\t} else {\n\t\texclude = [\"text\"]; \n\t}\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tfields.push(fieldName);\n\t\t\t}\n\t\t}\n\t\tfields.sort();\n\t\tfor(var f=0; f<fields.length; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tvar row = this.template,\n\t\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\t\tif(reMatch) {\n\t\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trow = row.replace(\"$name$\",fieldName);\n\t\t\t\trow = row.replace(\"$value$\",value);\n\t\t\t\trow = row.replace(\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\t\ttext.push(row);\n\t\t\t}\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude || changedAttributes.stripTitlePrefix || changedTiddlers[this.tiddlerTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/fields.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/image.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/image.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/importvariables.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar self = this;\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\tvar widgetStackStart,widgetStackEnd;\n\tfunction addWidgetNode(widgetNode) {\n\t\tif(widgetNode) {\n\t\t\tif(!widgetStackStart && !widgetStackEnd) {\n\t\t\t\twidgetStackStart = widgetNode;\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t} else {\n\t\t\t\twidgetStackEnd.children = [widgetNode];\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t}\n\t\t}\n\t}\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = self.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\taddWidgetNode({\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params\n\t\t\t\t});\n\t\t\t\tparseTreeNode = parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\t// Add our own children to the end of the pile\n\tvar parseTreeNodes;\n\tif(widgetStackStart && widgetStackEnd) {\n\t\tparseTreeNodes = [widgetStackStart];\n\t\twidgetStackEnd.children = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/importvariables.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/keyboard.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.utils.checkKeyDescriptor(event,self.keyInfo)) {\n\t\t\tself.dispatchMessage(event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.key = this.getAttribute(\"key\");\n\tthis.keyInfo = $tw.utils.parseKeyDescriptor(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/keyboard.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/link.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true;\n\t// Render the link if required\n\tif(useWikiLinks) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.linkClasses) {\n\t\tclasses.push(this.linkClasses);\n\t}\n\tclasses.push(\"tc-tiddlylink\");\n\tif(this.isShadow) {\n\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t}\n\tif(this.isMissing && !this.isShadow) {\n\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t} else {\n\t\tif(!this.isMissing) {\n\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t}\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Set an href\n\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\",\n\t\twikiLinkText = wikiLinkTemplate.replace(\"$uri_encoded$\",encodeURIComponent(this.to));\n\twikiLinkText = wikiLinkText.replace(\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tdomNode.setAttribute(\"href\",wikiLinkText);\n\t}\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragstart\", handlerObject: this, handlerMethod: \"handleDragStartEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1)\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n};\n\nLinkWidget.prototype.handleDragStartEvent = function(event) {\n\tif(event.target === this.domNodes[0]) {\n\t\tif(this.to) {\n\t\t\t$tw.dragInProgress = true;\n\t\t\t// Set the dragging class on the element being dragged\n\t\t\t$tw.utils.addClass(event.target,\"tc-tiddlylink-dragging\");\n\t\t\t// Create the drag image elements\n\t\t\tthis.dragImage = this.document.createElement(\"div\");\n\t\t\tthis.dragImage.className = \"tc-tiddler-dragger\";\n\t\t\tvar inner = this.document.createElement(\"div\");\n\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\tinner.appendChild(this.document.createTextNode(this.to));\n\t\t\tthis.dragImage.appendChild(inner);\n\t\t\tthis.document.body.appendChild(this.dragImage);\n\t\t\t// Astoundingly, we need to cover the dragger up: http://www.kryogenix.org/code/browser/custom-drag-image.html\n\t\t\tvar cover = this.document.createElement(\"div\");\n\t\t\tcover.className = \"tc-tiddler-dragger-cover\";\n\t\t\tcover.style.left = (inner.offsetLeft - 16) + \"px\";\n\t\t\tcover.style.top = (inner.offsetTop - 16) + \"px\";\n\t\t\tcover.style.width = (inner.offsetWidth + 32) + \"px\";\n\t\t\tcover.style.height = (inner.offsetHeight + 32) + \"px\";\n\t\t\tthis.dragImage.appendChild(cover);\n\t\t\t// Set the data transfer properties\n\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t// First the image\n\t\t\tdataTransfer.effectAllowed = \"copy\";\n\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\tdataTransfer.setDragImage(this.dragImage.firstChild,-16,-16);\n\t\t\t}\n\t\t\t// Then the data\n\t\t\tdataTransfer.clearData();\n\t\t\tvar jsonData = this.wiki.getTiddlerAsJson(this.to),\n\t\t\t\ttextData = this.wiki.getTiddlerText(this.to,\"\"),\n\t\t\t\ttitle = (new RegExp(\"^\" + $tw.config.textPrimitives.wikiLink + \"$\",\"mg\")).exec(this.to) ? this.to : \"[[\" + this.to + \"]]\";\n\t\t\t// IE doesn't like these content types\n\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\tdataTransfer.setData(\"text/plain\",title);\n\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t}\n\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\tdataTransfer.setData(\"Text\",title);\n\t\t\tevent.stopPropagation();\n\t\t} else {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\nLinkWidget.prototype.handleDragEndEvent = function(event) {\n\tif(event.target === this.domNodes[0]) {\n\t\t$tw.dragInProgress = false;\n\t\t// Remove the dragging class on the element being dragged\n\t\t$tw.utils.removeClass(event.target,\"tc-tiddlylink-dragging\");\n\t\t// Delete the drag image element\n\t\tif(this.dragImage) {\n\t\t\tthis.dragImage.parentNode.removeChild(this.dragImage);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/link.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/linkcatcher.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(this.catchTo) {\n\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.catchMessage && this.parentWidget) {\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: this.catchMessage,\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\tif(this.catchSet) {\n\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/linkcatcher.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/list.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
"title": "$:/core/modules/widgets/list.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/macrocall.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar text = this.getVariable(this.parseTreeNode.name || this.getAttribute(\"$name\"),{params: params}),\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/macrocall.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/navigator.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList}\n\t));\n};\n\nNavigatorWidget.prototype.findTitleInStory = function(storyList,title,defaultIndex) {\n\tvar p = storyList.indexOf(title);\n\treturn p === -1 ? defaultIndex : p;\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tvar p = storyList.indexOf(title);\n\twhile(p !== -1) {\n\t\tstoryList.splice(p,1);\n\t\tp = storyList.indexOf(title);\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tvar pos = storyList.indexOf(oldTitle);\n\tif(pos !== -1) {\n\t\tstoryList[pos] = newTitle;\n\t\tdo {\n\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\tif(pos !== -1) {\n\t\t\t\tstoryList.splice(pos,1);\n\t\t\t}\n\t\t} while(pos !== -1);\n\t} else {\n\t\tstoryList.splice(0,0,newTitle);\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tvar storyList = this.getStoryList();\n\tif(storyList) {\n\t\t// See if the tiddler is already there\n\t\tvar slot = this.findTitleInStory(storyList,title,-1);\n\t\t// If not we need to add it\n\t\tif(slot === -1) {\n\t\t\t// First we try to find the position of the story element we navigated from\n\t\t\tslot = this.findTitleInStory(storyList,fromTitle,-1) + 1;\n\t\t\t// Add the tiddler\n\t\t\tstoryList.splice(slot,0,title);\n\t\t\t// Save the story\n\t\t\tthis.saveStoryList(storyList);\n\t\t}\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title),\n\t\tdraftTitle = draftTiddler.fields.title,\n\t\tstoryList = this.getStoryList();\n\tthis.removeTitleFromStory(storyList,draftTitle);\n\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Delete this tiddler\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler(\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle;\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\";\n\t\tc++;\n\t} while(this.wiki.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Save the draft tiddler as the real tiddler\n\t\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields()));\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(originalTiddler) {\n\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t} else {\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t}\n\t\t\tthis.saveStoryList(storyList);\n\t\t\t// Trigger an autosave\n\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\t\t\t\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags)\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\texistingTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\t\t\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\tvar self = this;\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\t\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList.indexOf(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\t\t\n\t}\n\treturn false;\n};\n\n// \nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerData(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push(\"The following tiddlers were imported:\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tself.wiki.addTiddler(new $tw.Tiddler(tiddlerFields));\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: IMPORT_TITLE,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([IMPORT_TITLE]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/navigator.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/password.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/password.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/radio.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nRadio widget\n\nWill set a field to the selected value:\n\n```\n\t<$radio field=\"myfield\" value=\"check 1\">one</$radio>\n\t<$radio field=\"myfield\" value=\"check 2\">two</$radio>\n\t<$radio field=\"myfield\" value=\"check 3\">three</$radio>\n```\n\n|Parameter |Description |h\n|tiddler |Name of the tiddler in which the field should be set. Defaults to current tiddler |\n|field |The name of the field to be set |\n|value |The value to set |\n|class |Optional class name(s) |\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.radioClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(this.getValue() == this.radioValue) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.radioTitle);\n\treturn tiddler && tiddler.getFieldString(this.radioField);\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tif(this.radioClass !== \"\") {\n\t\tthis.radioClass += \" \";\n\t}\n\tthis.radioClass += \"tc-radio\";\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/radio.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/raw.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/raw.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/reveal.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tdomNode.style.left = (this.popup.left - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTitle = this.state;\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state = this.stateTitle ? this.wiki.getTextReference(this.stateTitle,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.readMatchState(state);\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.readMatchState(state);\n\t\t\tthis.isOpen = !this.isOpen;\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.readMatchState = function(state) {\n\tthis.isOpen = state === this.text;\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes[\"default\"] || changedAttributes.animate) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false,\n\t\t\tcurrentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\trefreshed = true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n }});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/reveal.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/scrollable.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/scrollable.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/select.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\tvar value = this.getSelectDomNode().value;\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tvar domNode = this.getSelectDomNode();\n\tif(domNode.value !== value) {\n\t\tdomNode.value = value;\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tif(changedTiddlers[this.selectTitle]) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/select.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/set.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tvar value = this.setValue;\n\tif(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(!this.setValue) {\n\t\t\tvalue = $tw.utils.stringifyList(results);\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t}\n\tthis.setVariable(this.setName,value,this.parseTreeNode.params);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.value || changedAttributes.emptyValue) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/set.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/text.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/text.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/tiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/tiddler.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/transclude.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: \"Recursive transclusion error in transclude widget\"}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/transclude.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/view.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified();\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function() {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{parentWidget: this});\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/view.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/widget.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tif(arguments.length > 0) {\n\t\tthis.initialise(parseTreeNode,options);\n\t}\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\n*/\nWidget.prototype.setVariable = function(name,value,params) {\n\tthis.variables[name] = {value: value, params: params};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n*/\nWidget.prototype.getVariable = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value;\n\t\t// Substitute any parameters specified in the definition\n\t\tvalue = this.substituteVariableParameters(value,variable.params,actualParams);\n\t\tvalue = this.substituteVariableReferences(value);\n\t\treturn value;\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn this.evaluateMacroModule(name,actualParams,options.defaultValue);\n};\n\nWidget.prototype.substituteVariableParameters = function(text,formalParams,actualParams) {\n\tif(formalParams) {\n\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\tparamInfo, paramValue;\n\t\t// Step through each of the parameters in the macro definition\n\t\tfor(var p=0; p<formalParams.length; p++) {\n\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\tparamInfo = formalParams[p];\n\t\t\tparamValue = undefined;\n\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\tnextAnonParameter++;\n\t\t\t}\n\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t}\n\t\t\t// If we've still not got a value, use the default, if any\n\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t// Replace any instances of this parameter\n\t\t\ttext = text.replace(new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(paramInfo.name) + \"\\\\$\",\"mg\"),paramValue);\n\t\t}\n\t}\n\treturn text;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tname = name || \"transclusion\";\n\tvar output = [],\n\t\tnode = this;\n\twhile(node && node.parentWidget) {\n\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\toutput.push(node.getVariable(name));\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn $tw.utils.hashString(output.join(\"\"));\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.render(parent,nextSibling);\n\t});\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar self = this,\n\t\trefreshed = false;\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\trefreshed = childWidget.refresh(changedTiddlers) || refreshed;\n\t});\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\treturn parent.findNextSiblingDomNode(index);\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction && child.invokeAction(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
"title": "$:/core/modules/widgets/widget.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/wiki.js": {
"text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\";\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value) {\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tdata[index] = value;\n\t\tthis.setTiddlerData(title,data,this.getModificationFields());\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type] || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || [];\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tvar fields = {\n\t\t\tcreated: new Date()\n\t\t},\n\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\tif(creator) {\n\t\tfields.creator = creator;\n\t}\n\treturn fields;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tvar fields = Object.create(null),\n\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\tfields.modified = new Date();\n\tif(modifier) {\n\t\tfields.modifier = modifier;\n\t}\n\treturn fields;\n};\n\n/*\nReturn a sorted array of tiddler titles. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t (isDescending ? y - x : x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\t// Count up the links\n\t\tvar links = [],\n\t\t\tcheckParseTree = function(parseTree) {\n\t\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\tif(parser) {\n\t\t\tcheckParseTree(parser.tree);\n\t\t}\n\t\treturn links;\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinks = [];\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\tbacklinks.push(title);\n\t\t}\n\t});\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\tvar self = this;\n\treturn this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\tvar tagmap = self.getTagMap();\n\t\treturn self.sortByList(tagmap[tag],tag);\n\t});\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tvar currPos = titles.indexOf(title),\n\t\t\t\tnewPos = -1,\n\t\t\t\ttiddler = this.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(newPos === -1) {\n\t\t\t\t\tnewPos = currPos;\n\t\t\t\t}\n\t\t\t\tif(newPos !== currPos) {\n\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t}\n\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerData(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerData(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\n// Temporarily disable caching so that tweakParseTreeNode() works\nreturn initializer();\n\n//\tthis.caches = this.caches || Object.create(null);\n//\tvar caches = this.caches[title];\n//\tif(caches && caches[cacheName]) {\n//\t\treturn caches[cacheName];\n//\t} else {\n//\t\tif(!caches) {\n//\t\t\tcaches = Object.create(null);\n//\t\t\tthis.caches[title] = caches;\n//\t\t}\n//\t\tcaches[cacheName] = initializer();\n//\t\treturn caches[cacheName];\n//\t}\n};\n\n// Clear all caches associated with a particular tiddler\nexports.clearCache = function(title) {\n\tthis.caches = this.caches || Object.create(null);\n\tif($tw.utils.hop(this.caches,title)) {\n\t\tdelete this.caches[title];\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.old_parseText = function(type,text,options) {\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.old_parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"newInlineParseTree\" : \"newBlockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.old_parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nvar tweakMacroDefinition = function(nodeList) {\n\tif(nodeList && nodeList[0] && nodeList[0].type === \"macrodef\") {\n\t\tnodeList[0].type = \"set\";\n\t\tnodeList[0].attributes = {\n\t\t\tname: {type: \"string\", value: nodeList[0].name},\n\t\t\tvalue: {type: \"string\", value: nodeList[0].text}\n\t\t};\n\t\tnodeList[0].children = nodeList.slice(1);\n\t\tnodeList.splice(1,nodeList.length-1);\n\t\ttweakMacroDefinition(nodeList[0].children);\n\t}\n};\n\nvar tweakParser = function(parser) {\n\t// Move any macro definitions to contain the body tree\n\ttweakMacroDefinition(parser.tree);\n};\n\nexports.parseText = function(type,text,options) {\n\tvar parser = this.old_parseText(type,text,options);\n\tif(parser) {\n\t\ttweakParser(parser);\n\t}\n\treturn parser;\n};\n\nexports.parseTiddler = function(title,options) {\n\tvar parser = this.old_parseTiddler(title,options);\n\tif(parser) {\n\t\ttweakParser(parser);\n\t}\n\treturn parser;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type || \"text/vnd.tiddlywiki\",tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTree = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"transclude\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttiddler: {\n\t\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: title}},\n\t\t\t\tisBlock: !options.parseAsInline}]}\n\t]};\n\tif(options.field) {\n\t\tparseTree.tree[0].children[0].attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTree.tree[0].children[0].attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTree.tree[0].children[0].children = options.children;\n\t}\n\treturn $tw.wiki.makeWidget(parseTree,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tliteral: If true, searches for literal string, rather than separate search terms\n\tfield: If specified, restricts the search to the specified field\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tmatch;\n\t\tfor(var t=0; t<searchTermsRegExps.length; t++) {\n\t\t\tmatch = false;\n\t\t\tif(options.field) {\n\t\t\t\tmatch = searchTermsRegExps[t].test(tiddler.getFieldString(options.field));\n\t\t\t} else {\n\t\t\t\t// Search title, tags and body\n\t\t\t\tif(contentTypeInfo.encoding === \"utf8\") {\n\t\t\t\t\tmatch = match || searchTermsRegExps[t].test(tiddler.fields.text);\n\t\t\t\t}\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.join(\"\\0\") : \"\";\n\t\t\t\tmatch = match || searchTermsRegExps[t].test(tags) || searchTermsRegExps[t].test(tiddler.fields.title);\n\t\t\t}\n\t\t\tif(!match) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(tiddler.fields.text !== undefined) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text;\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,callback) {\n\tvar result = [],\n\t\toutstanding = files.length;\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t});\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,callback) {\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\t// Deserialise the file contents\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\", type: type};\n\t\t// Are we binary?\n\t\tif(isBinary) {\n\t\t\t// The base64 section starts after the first comma in the data URI\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttiddlerFields.text = text.substr(commaPos+1);\n\t\t\t\tcallback([tiddlerFields]);\n\t\t\t}\n\t\t} else {\n\t\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\t\tif(encryptedJson) {\n\t\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields));\n\t\t\t}\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]);\n\tif(!origTiddler) {\n\t\treturn tiddler.fields.text !== \"\";\n\t}\n\treturn tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"] || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\thistoryTitle = historyTitle || \"$:/HistoryList\";\n\tvar titles = $tw.utils.isArray(title) ? title : [title];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.getTiddlerData(historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: fromPageRect});\n\t});\n\tthis.setTiddlerData(historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n})();\n",
"title": "$:/core/modules/wiki.js",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/palettes/Blanca": {
"title": "$:/palettes/Blanca",
"name": "Blanca",
"description": "A clean white palette to let you focus",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Blue": {
"title": "$:/palettes/Blue",
"name": "Blue",
"description": "A blue theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Muted": {
"title": "$:/palettes/Muted",
"name": "Muted",
"description": "Bright tiddlers on a muted background",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Contrast": {
"title": "$:/palettes/Contrast",
"name": "Contrast",
"description": "High contrast and unambiguous",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,0,0, 0.5)\nsidebar-foreground: #ffffff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ececec\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/DarkPhotos": {
"created": "20150402111612188",
"description": "Good with dark photo backgrounds",
"modified": "20150402112344080",
"name": "DarkPhotos",
"tags": "$:/tags/Palette",
"title": "$:/palettes/DarkPhotos",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Rocker": {
"title": "$:/palettes/Rocker",
"name": "Rocker",
"description": "A dark theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Vanilla": {
"title": "$:/palettes/Vanilla",
"name": "Vanilla",
"description": "Pale and unobtrusive",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/core/readme": {
"title": "$:/core/readme",
"text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
},
"$:/core/templates/MOTW.html": {
"title": "$:/core/templates/MOTW.html",
"text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)http://tiddlywiki.com --> "
},
"$:/core/templates/alltiddlers.template.html": {
"title": "$:/core/templates/alltiddlers.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
},
"$:/core/templates/canonical-uri-external-image": {
"title": "$:/core/templates/canonical-uri-external-image",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/css-tiddler": {
"title": "$:/core/templates/css-tiddler",
"text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
},
"$:/core/templates/exporters/CsvFile": {
"title": "$:/core/templates/exporters/CsvFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/CsvFile}}",
"extension": ".csv",
"text": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/JsonFile": {
"title": "$:/core/templates/exporters/JsonFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/JsonFile}}",
"extension": ".json",
"text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/StaticRiver": {
"title": "$:/core/templates/exporters/StaticRiver",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/StaticRiver}}",
"extension": ".html",
"text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
},
"$:/core/templates/exporters/StaticRiver/Content": {
"title": "$:/core/templates/exporters/StaticRiver/Content",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n<<renderContent>>\n</$importvariables>\n"
},
"$:/core/templates/exporters/TidFile": {
"title": "$:/core/templates/exporters/TidFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/TidFile}}",
"extension": ".tid",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\"><<renderContent>></$importvariables>"
},
"$:/core/templates/html-div-tiddler": {
"title": "$:/core/templates/html-div-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
},
"$:/core/templates/html-tiddler": {
"title": "$:/core/templates/html-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
},
"$:/core/templates/javascript-tiddler": {
"title": "$:/core/templates/javascript-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
},
"$:/core/templates/module-tiddler": {
"title": "$:/core/templates/module-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
},
"$:/core/templates/plain-text-tiddler": {
"title": "$:/core/templates/plain-text-tiddler",
"text": "<$view field=\"text\" format=\"text\" />"
},
"$:/core/save/all": {
"title": "$:/core/save/all",
"text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/empty": {
"title": "$:/core/save/empty",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-images": {
"title": "$:/core/save/lazy-images",
"text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/templates/split-recipe": {
"title": "$:/core/templates/split-recipe",
"text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
},
"$:/core/templates/static-tiddler": {
"title": "$:/core/templates/static-tiddler",
"text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
},
"$:/core/templates/static.area": {
"title": "$:/core/templates/static.area",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n"
},
"$:/core/templates/static.content": {
"title": "$:/core/templates/static.content",
"type": "text/vnd.tiddlywiki",
"text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|http://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
},
"$:/core/templates/static.template.css": {
"title": "$:/core/templates/static.template.css",
"text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
},
"$:/core/templates/static.template.html": {
"title": "$:/core/templates/static.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
},
"$:/core/templates/static.tiddler.html": {
"title": "$:/core/templates/static.tiddler.html",
"text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`{{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river\">\n`<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>\n</$importvariables>`\n</section>\n</body>\n</html>\n`"
},
"$:/core/templates/store.area.template.html": {
"title": "$:/core/templates/store.area.template.html",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
},
"$:/core/templates/tid-tiddler": {
"title": "$:/core/templates/tid-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/tiddler-metadata": {
"title": "$:/core/templates/tiddler-metadata",
"text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
},
"$:/core/templates/tiddlywiki5.html": {
"title": "$:/core/templates/tiddlywiki5.html",
"text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html>\n<head>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\t\t<!-- Force IE standards mode for Intranet and HTA - should be the first meta -->\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}\n</div>\n</body>\n</html>\n"
},
"$:/core/templates/version": {
"title": "$:/core/templates/version",
"text": "<<version>>"
},
"$:/core/templates/wikified-tiddler": {
"title": "$:/core/templates/wikified-tiddler",
"text": "<$transclude />"
},
"$:/core/ui/AdvancedSearch/Filter": {
"title": "$:/core/ui/AdvancedSearch/Filter",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Filter/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n</div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Shadows": {
"title": "$:/core/ui/AdvancedSearch/Shadows",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Shadows/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Standard": {
"title": "$:/core/ui/AdvancedSearch/Standard",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Standard/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/System": {
"title": "$:/core/ui/AdvancedSearch/System",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/System/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/AdvancedSearch": {
"title": "$:/AdvancedSearch",
"icon": "$:/core/images/advanced-search-button",
"color": "#bbb",
"text": "<div class=\"tc-advanced-search\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n"
},
"$:/core/ui/AlertTemplate": {
"title": "$:/core/ui/AlertTemplate",
"text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button message=\"tm-delete-tiddler\" class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=\"0hh:0mm:0ss DD MM YYYY\"/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">(count: <$view field=\"count\"/>)</span></$reveal>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
},
"$:/core/ui/BinaryWarning": {
"title": "$:/core/ui/BinaryWarning",
"text": "\\define lingo-base() $:/language/BinaryWarning/\n<div class=\"tc-binary-warning\">\n\n<<lingo Prompt>>\n\n</div>\n"
},
"$:/core/ui/Components/tag-link": {
"title": "$:/core/ui/Components/tag-link",
"text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
},
"$:/core/ui/ControlPanel/Advanced": {
"title": "$:/core/ui/ControlPanel/Advanced",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
"text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Appearance": {
"title": "$:/core/ui/ControlPanel/Appearance",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
"text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Basics": {
"title": "$:/core/ui/ControlPanel/Basics",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Basics/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit-text tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Tags\" default=\"\" tag=\"input\"/> |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
},
"$:/core/ui/ControlPanel/EditorTypes": {
"title": "$:/core/ui/ControlPanel/EditorTypes",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/Info": {
"title": "$:/core/ui/ControlPanel/Info",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Info/Caption}}",
"text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/LoadedModules": {
"title": "$:/core/ui/ControlPanel/LoadedModules",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
},
"$:/core/ui/ControlPanel/Modals/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
"subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define install-plugin-button()\n<$button>\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"install\"\"\">\nreinstall\n</$list>\n</$button>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1><$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<<install-plugin-button>>\n</div>\n</div>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"This plugin is not currently installed\"\"\">\n<em>\nThis plugin is already installed at version <$text text=<<installedVersion>>/>\n</em>\n</$list>\n</div>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} open plugin library\n</$button>\n\\end\n\n\\define display-server-assets(type)\nSearch: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\" focus=\"true\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[description]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$list>\n\\end\n\n\\define plugin-library-listing()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<div class=\"tc-plugin-library\">\n\n!! <$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link>\n\n//<$view field=\"url\"/>//\n\n<$transclude/>\n\n<<display-server-connection>>\n</div>\n</$list>\n\\end\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<div>\n<<plugin-library-listing>>\n</div>\n\n</$importvariables>\n"
},
"$:/core/ui/ControlPanel/Palette": {
"title": "$:/core/ui/ControlPanel/Palette",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Palette/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/snippets/paletteeditor}}\n\n</$reveal>\n\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
"text": "<<display-server-assets language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
"text": "<<display-server-assets plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
"text": "<<display-server-assets theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
"text": "<<plugin-table language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
"text": "<<plugin-table plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
"text": "<<plugin-table theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage)\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1>\n''<$view field=\"description\"><$view field=\"title\"/></$view>'' $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-table(type)\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[description]]\" emptyMessage=<<lingo \"Empty/Hint\">>>\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$reveal type=\"nomatch\" text=\"\" state=\"!!list\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList={{!!list}} default=\"readme\" template=\"$:/core/ui/PluginInfo\"/>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=\"!!list\">\nNo information provided\n</$reveal>\n</div>\n</div>\n</$reveal>\n</$set>\n</$list>\n</$set>\n\\end\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green\" style=\"background:blue;\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n\n<<lingo Installed/Hint>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n"
},
"$:/core/ui/ControlPanel/Saving": {
"title": "$:/core/ui/ControlPanel/Saving",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Saving/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/\n\\define backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n! <<lingo TiddlySpot/Heading>>\n\n<<lingo TiddlySpot/Description>>\n\n|<<lingo TiddlySpot/UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo TiddlySpot/Password>> |<$password name=\"upload\"/> |\n|<<lingo TiddlySpot/Backups>> |<<backupLink>> |\n\n''<<lingo TiddlySpot/Advanced/Heading>>''\n\n|<<lingo TiddlySpot/ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo TiddlySpot/Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo TiddlySpot/UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo TiddlySpot/BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>"
},
"$:/core/ui/ControlPanel/Settings/AutoSave": {
"title": "$:/core/ui/ControlPanel/Settings/AutoSave",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/AutoSave/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/AutoSave/\n\n<$link to=\"$:/config/AutoSave\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo Disabled/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
"caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationHistory": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings": {
"title": "$:/core/ui/ControlPanel/Settings",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Settings/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ControlPanel/StoryView": {
"title": "$:/core/ui/ControlPanel/StoryView",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
"text": "{{$:/snippets/viewswitcher}}\n"
},
"$:/core/ui/ControlPanel/Theme": {
"title": "$:/core/ui/ControlPanel/Theme",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Theme/Caption}}",
"text": "{{$:/snippets/themeswitcher}}\n"
},
"$:/core/ui/ControlPanel/TiddlerFields": {
"title": "$:/core/ui/ControlPanel/TiddlerFields",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
},
"$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>> field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars/PageControls": {
"title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>> field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>> field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars": {
"title": "$:/core/ui/ControlPanel/Toolbars",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
"text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n"
},
"$:/ControlPanel": {
"title": "$:/ControlPanel",
"icon": "$:/core/images/options-button",
"color": "#bbb",
"text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n"
},
"$:/core/ui/DefaultSearchResultList": {
"title": "$:/core/ui/DefaultSearchResultList",
"tags": "$:/tags/SearchResults",
"caption": "{{$:/language/Search/DefaultResults/Caption}}",
"text": "\\define searchResultList()\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search{$(searchTiddler)$}]\"/>\"\"\">\n\n{{$:/language/Search/Matches}}\n\n</$set>\n\n//<small>Title matches:</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>All matches:</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\\end\n<<searchResultList>>\n"
},
"$:/core/ui/EditTemplate/body": {
"title": "$:/core/ui/EditTemplate/body",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Body/\n<$list filter=\"[is[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[is[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<em class=\"tc-edit\"><<lingo Hint>></em> <$button type=\"set\" set=\"$:/state/showeditpreview\" setTo=\"no\"><<lingo Preview/Button/Hide>></$button>\n\n<div class=\"tc-tiddler-preview\">\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude />\n\n</div>\n\n<div class=\"tc-tiddler-preview-edit\">\n<$edit field=\"text\" class=\"tc-edit-texteditor\" placeholder={{$:/language/EditTemplate/Body/Placeholder}}/>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<em class=\"tc-edit\"><<lingo Hint>></em> <$button type=\"set\" set=\"$:/state/showeditpreview\" setTo=\"yes\"><<lingo Preview/Button/Show>></$button>\n<$edit field=\"text\" class=\"tc-edit-texteditor\" placeholder={{$:/language/EditTemplate/Body/Placeholder}}/>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/EditTemplate/controls": {
"title": "$:/core/ui/EditTemplate/controls",
"tags": "$:/tags/EditTemplate",
"text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
},
"$:/core/ui/EditTemplate/fields": {
"title": "$:/core/ui/EditTemplate/fields",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define new-field-inner()\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button>\n<$action-sendmessage $message=\"tm-add-field\" $(name)$=<<value>>/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n\\end\n\n\\define new-field()\n<$set name=\"name\" value={{$:/temp/newfieldname}}>\n<$set name=\"value\" value={{$:/temp/newfieldvalue}}>\n<<new-field-inner>>\n</$set>\n</$set>\n\\end\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n\n"
},
"$:/core/ui/EditTemplate/shadow": {
"title": "$:/core/ui/EditTemplate/shadow",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$list>\n"
},
"$:/core/ui/EditTemplate/tags": {
"title": "$:/core/ui/EditTemplate/tags",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\n\\end\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\"><$set name=\"backgroundColor\" value={{!!color}}><span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">×</$button></span>\n</$set>\n</$list>\n\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$edit-text tiddler=\"$:/temp/NewTagName\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$button message=\"tm-add-tag\" param={{$:/temp/NewTagName}} set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n<<lingo Tags/Add/Button>>\n</$button>\n</span>\n</div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown\">\n<$linkcatcher set=\"$:/temp/NewTagName\" setTo=\"\" message=\"tm-add-tag\">\n<$list filter=\"[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]\">\n{{||$:/core/ui/Components/tag-link}}\n</$list>\n<hr>\n<$list filter=\"[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]\">\n{{||$:/core/ui/Components/tag-link}}\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n</$fieldmangler>\n</div>"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\"/>"
},
"$:/core/ui/EditTemplate/type": {
"title": "$:/core/ui/EditTemplate/type",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> <$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-popup-handle\"/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>"
},
"$:/core/ui/EditTemplate": {
"title": "$:/core/ui/EditTemplate",
"text": "\\define frame-classes()\ntc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$\n\\end\n<div class=<<frame-classes>>>\n<$set name=\"storyTiddler\" value=<<currentTiddler>>>\n<$keyboard key=\"escape\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"ctrl+enter\" message=\"tm-save-tiddler\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n</$list>\n</$keyboard>\n</$keyboard>\n</$set>\n</div>\n"
},
"$:/core/ui/Buttons/cancel": {
"title": "$:/core/ui/Buttons/cancel",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
"description": "{{$:/language/Buttons/Cancel/Hint}}",
"text": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/delete": {
"title": "$:/core/ui/Buttons/delete",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
"description": "{{$:/language/Buttons/Delete/Hint}}",
"text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save": {
"title": "$:/core/ui/Buttons/save",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
"description": "{{$:/language/Buttons/Save/Hint}}",
"text": "<$button message=\"tm-save-tiddler\" tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/Filters/AllTags": {
"title": "$:/core/Filters/AllTags",
"tags": "$:/tags/Filter",
"filter": "[tags[]!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTags}}",
"text": ""
},
"$:/core/Filters/AllTiddlers": {
"title": "$:/core/Filters/AllTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTiddlers}}",
"text": ""
},
"$:/core/Filters/Drafts": {
"title": "$:/core/Filters/Drafts",
"tags": "$:/tags/Filter",
"filter": "[has[draft.of]sort[title]]",
"description": "{{$:/language/Filters/Drafts}}",
"text": ""
},
"$:/core/Filters/Missing": {
"title": "$:/core/Filters/Missing",
"tags": "$:/tags/Filter",
"filter": "[all[missing]sort[title]]",
"description": "{{$:/language/Filters/Missing}}",
"text": ""
},
"$:/core/Filters/Orphans": {
"title": "$:/core/Filters/Orphans",
"tags": "$:/tags/Filter",
"filter": "[all[orphans]sort[title]]",
"description": "{{$:/language/Filters/Orphans}}",
"text": ""
},
"$:/core/Filters/OverriddenShadowTiddlers": {
"title": "$:/core/Filters/OverriddenShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[shadow]]",
"description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentSystemTiddlers": {
"title": "$:/core/Filters/RecentSystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentSystemTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentTiddlers": {
"title": "$:/core/Filters/RecentTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentTiddlers}}",
"text": ""
},
"$:/core/Filters/ShadowTiddlers": {
"title": "$:/core/Filters/ShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[all[shadows]sort[title]]",
"description": "{{$:/language/Filters/ShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/SystemTags": {
"title": "$:/core/Filters/SystemTags",
"tags": "$:/tags/Filter",
"filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTags}}",
"text": ""
},
"$:/core/Filters/SystemTiddlers": {
"title": "$:/core/Filters/SystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTiddlers}}",
"text": ""
},
"$:/core/Filters/TypedTiddlers": {
"title": "$:/core/Filters/TypedTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Filters/TypedTiddlers}}",
"text": ""
},
"$:/core/ui/ImportListing": {
"title": "$:/core/ui/ImportListing",
"text": "\\define lingo-base() $:/language/Import/\n\\define messageField()\nmessage-$(payloadTiddler)$\n\\end\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\n<table>\n<tbody>\n<tr>\n<th>\n<<lingo Listing/Select/Caption>>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>>>\n<$transclude subtiddler=<<payloadTiddler>> mode=\"block\"/>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ListItemTemplate": {
"title": "$:/core/ui/ListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</div>"
},
"$:/core/ui/MissingTemplate": {
"title": "$:/core/ui/MissingTemplate",
"text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
},
"$:/core/ui/MoreSideBar/All": {
"title": "$:/core/ui/MoreSideBar/All",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/All/Caption}}",
"text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Drafts": {
"title": "$:/core/ui/MoreSideBar/Drafts",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Drafts/Caption}}",
"text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Missing": {
"title": "$:/core/ui/MoreSideBar/Missing",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Missing/Caption}}",
"text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Orphans": {
"title": "$:/core/ui/MoreSideBar/Orphans",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Orphans/Caption}}",
"text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Recent": {
"title": "$:/core/ui/MoreSideBar/Recent",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/MoreSideBar/Shadows": {
"title": "$:/core/ui/MoreSideBar/Shadows",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Shadows/Caption}}",
"text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/System": {
"title": "$:/core/ui/MoreSideBar/System",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/System/Caption}}",
"text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Tags": {
"title": "$:/core/ui/MoreSideBar/Tags",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Tags/Caption}}",
"text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/> <small class=\"tc-menu-list-count\"><$count filter=\"[all[current]tagging[]]\"/></small>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}} <small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n"
},
"$:/core/ui/MoreSideBar/Types": {
"title": "$:/core/ui/MoreSideBar/Types",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Types/Caption}}",
"text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
},
"$:/core/ui/Buttons/advanced-search": {
"title": "$:/core/ui/Buttons/advanced-search",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
"description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
"text": "\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/close-all": {
"title": "$:/core/ui/Buttons/close-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
"description": "{{$:/language/Buttons/CloseAll/Hint}}",
"text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/control-panel": {
"title": "$:/core/ui/Buttons/control-panel",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
"description": "{{$:/language/Buttons/ControlPanel/Hint}}",
"text": "\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/encryption": {
"title": "$:/core/ui/Buttons/encryption",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
"description": "{{$:/language/Buttons/Encryption/Hint}}",
"text": "<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>"
},
"$:/core/ui/Buttons/export-page": {
"title": "$:/core/ui/Buttons/export-page",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
"description": "{{$:/language/Buttons/ExportPage/Hint}}",
"text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
},
"$:/core/ui/Buttons/full-screen": {
"title": "$:/core/ui/Buttons/full-screen",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
"description": "{{$:/language/Buttons/FullScreen/Hint}}",
"text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/home": {
"title": "$:/core/ui/Buttons/home",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
"description": "{{$:/language/Buttons/Home/Hint}}",
"text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/import": {
"title": "$:/core/ui/Buttons/import",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
"description": "{{$:/language/Buttons/Import/Hint}}",
"text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
},
"$:/core/ui/Buttons/language": {
"title": "$:/core/ui/Buttons/language",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
"description": "{{$:/language/Buttons/Language/Hint}}",
"text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down tc-drop-down-language-chooser\">\n<$linkcatcher to=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$link>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/language\" text=<<currentTiddler>>>\n•\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/language\" text=<<currentTiddler>>>\n \n</$reveal>\n</span>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
},
"$:/core/ui/Buttons/more-page-actions": {
"title": "$:/core/ui/Buttons/more-page-actions",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-journal": {
"title": "$:/core/ui/Buttons/new-journal",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
"description": "{{$:/language/Buttons/NewJournal/Hint}}",
"text": "\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now \"$(journalTitleTemplate)$\">> tags=\"$(journalTags)$\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<<journalButton>>\n</$set></$set>"
},
"$:/core/ui/Buttons/new-tiddler": {
"title": "$:/core/ui/Buttons/new-tiddler",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
"description": "{{$:/language/Buttons/NewTiddler/Hint}}",
"text": "<$button message=\"tm-new-tiddler\" tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/refresh": {
"title": "$:/core/ui/Buttons/refresh",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
"description": "{{$:/language/Buttons/Refresh/Hint}}",
"text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save-wiki": {
"title": "$:/core/ui/Buttons/save-wiki",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
"description": "{{$:/language/Buttons/SaveWiki/Hint}}",
"text": "<$button message=\"tm-save-wiki\" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
},
"$:/core/ui/Buttons/storyview": {
"title": "$:/core/ui/Buttons/storyview",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
"description": "{{$:/language/Buttons/StoryView/Hint}}",
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/view\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$link to=<<storyview>>>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/view\" text=<<storyview>>>\n•\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/view\" text=<<storyview>>>\n \n</$reveal>\n</span>\n<$transclude tiddler=<<icon>>/>\n<$text text=<<storyview>>/></$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
},
"$:/core/ui/Buttons/tag-manager": {
"title": "$:/core/ui/Buttons/tag-manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
"description": "{{$:/language/Buttons/TagManager/Hint}}",
"text": "\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/theme": {
"title": "$:/core/ui/Buttons/theme",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
"description": "{{$:/language/Buttons/Theme/Hint}}",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\" variable=\"themeTitle\">\n<$link to=<<themeTitle>>>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/theme\" text=<<themeTitle>>>\n•\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/theme\" text=<<themeTitle>>>\n \n</$reveal>\n</span>\n<$view tiddler=<<themeTitle>> field=\"name\"/>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
},
"$:/core/ui/PageTemplate/pagecontrols": {
"title": "$:/core/ui/PageTemplate/pagecontrols",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$reveal>\n</$list>\n</div>\n\n"
},
"$:/core/ui/PageStylesheet": {
"title": "$:/core/ui/PageStylesheet",
"text": "<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n\n</$importvariables>\n"
},
"$:/core/ui/PageTemplate/alerts": {
"title": "$:/core/ui/PageTemplate/alerts",
"tags": "$:/tags/PageTemplate",
"text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
},
"$:/core/ui/PageTemplate/pluginreloadwarning": {
"title": "$:/core/ui/PageTemplate/pluginreloadwarning",
"tags": "$:/tags/PageTemplate",
"text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[has[plugin-type]haschanged[]!plugin-type[import]limit[1]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/PageTemplate/sidebar": {
"title": "$:/core/ui/PageTemplate/sidebar",
"tags": "$:/tags/PageTemplate",
"text": "<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\">\n\n<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n\n<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n\n{{||$:/core/ui/PageTemplate/pagecontrols}}\n\n<$transclude tiddler=\"$:/core/ui/SideBarLists\" mode=\"inline\"/>\n\n</$reveal>\n\n</div>\n\n</$scrollable>"
},
"$:/core/ui/PageTemplate/story": {
"title": "$:/core/ui/PageTemplate/story",
"tags": "$:/tags/PageTemplate",
"text": "<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template=\"$:/core/ui/ViewTemplate\" editTemplate=\"$:/core/ui/EditTemplate\" storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate": {
"title": "$:/core/ui/PageTemplate",
"text": "\\define containerClasses()\ntc-page-container tc-page-view-$(themeTitle)$ tc-language-$(languageTitle)$\n\\end\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$set name=\"themeTitle\" value={{$:/view}}>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=\"\">\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$dropzone>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$importvariables>\n"
},
"$:/core/ui/PluginInfo": {
"title": "$:/core/ui/PluginInfo",
"text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\nNo ''\"<$text text=<<currentTab>>/>\"'' found\n</$transclude>\n</$transclude>\n</$transclude>\n"
},
"$:/core/ui/SearchResults": {
"title": "$:/core/ui/SearchResults",
"text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n\n</div>\n"
},
"$:/core/ui/SideBar/More": {
"title": "$:/core/ui/SideBar/More",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/More/Caption}}",
"text": "<div class=\"tc-more-sidebar\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Tags\" \"$:/state/tab/moresidebar\" \"tc-vertical\">>\n</div>\n"
},
"$:/core/ui/SideBar/Open": {
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Open/Caption}}",
"text": "\\define lingo-base() $:/language/CloseAll/\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" storyview=\"pop\">\n\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">×</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\n\n</$list>\n\n<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\n"
},
"$:/core/ui/SideBar/Recent": {
"title": "$:/core/ui/SideBar/Recent",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/SideBar/Tools": {
"title": "$:/core/ui/SideBar/Tools",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/SideBarLists": {
"title": "$:/core/ui/SideBarLists",
"text": "<div class=\"tc-sidebar-lists\">\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus=\"true\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n{{$:/core/ui/SearchResults}}\n</$set>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" />\n\n</$reveal>\n\n</div>\n"
},
"$:/TagManager": {
"title": "$:/TagManager",
"icon": "$:/core/images/tag-button",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/icon/$title$\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/icon/$title$\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$title$!!icon\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define qualifyTitle(title)\n$title$$(currentTiddler)$\n\\end\n\\define toggleButton(state)\n<$reveal state=\"$state$\" type=\"match\" text=\"closed\" default=\"closed\">\n<$button set=\"$state$\" setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal state=\"$state$\" type=\"match\" text=\"open\" default=\"closed\">\n<$button set=\"$state$\" setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td><$transclude tiddler=\"$:/core/ui/TagTemplate\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state=<<qualifyTitle \"$:/state/tag-manager/\">> /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td>\n<$reveal state=<<qualifyTitle \"$:/state/tag-manager/\">> type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n<td></td>\n<td></td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/TagTemplate": {
"title": "$:/core/ui/TagTemplate",
"text": "\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB)\n<$set name=\"foregroundColor\" value=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">>>\n<$set name=\"backgroundColor\" value=\"\"\"$colour$\"\"\">\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-tag-label\" style=<<tag-styles>>>\n<$transclude tiddler={{!!icon}}/> <$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\"><div class=\"tc-drop-down\"><$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]tagging[]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</$set>\n</$set>\n\\end\n\n\\define tag-body(colour,palette)\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/>\n</span>\n\\end\n\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}}/>\n"
},
"$:/core/ui/TiddlerFieldTemplate": {
"title": "$:/core/ui/TiddlerFieldTemplate",
"text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
},
"$:/core/ui/TiddlerFields": {
"title": "$:/core/ui/TiddlerFields",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
},
"$:/core/ui/TiddlerInfo/Advanced": {
"title": "$:/core/ui/TiddlerInfo/Advanced",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Fields": {
"title": "$:/core/ui/TiddlerInfo/Fields",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
"text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
},
"$:/core/ui/TiddlerInfo/List": {
"title": "$:/core/ui/TiddlerInfo/List",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/List/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Listed": {
"title": "$:/core/ui/TiddlerInfo/Listed",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/References": {
"title": "$:/core/ui/TiddlerInfo/References",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/References/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Tagging": {
"title": "$:/core/ui/TiddlerInfo/Tagging",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Tools": {
"title": "$:/core/ui/TiddlerInfo/Tools",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/TiddlerInfo": {
"title": "$:/core/ui/TiddlerInfo",
"text": "<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>"
},
"$:/core/ui/TopBar/menu": {
"title": "$:/core/ui/TopBar/menu",
"tags": "$:/tags/TopRightBar",
"text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$reveal>\n"
},
"$:/core/ui/UntaggedTemplate": {
"title": "$:/core/ui/UntaggedTemplate",
"text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/body": {
"title": "$:/core/ui/ViewTemplate/body",
"tags": "$:/tags/ViewTemplate",
"text": "<div class=\"tc-tiddler-body\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</div>\n"
},
"$:/core/ui/ViewTemplate/classic": {
"title": "$:/core/ui/ViewTemplate/classic",
"tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/import": {
"title": "$:/core/ui/ViewTemplate/import",
"tags": "$:/tags/ViewTemplate",
"text": "\\define lingo-base() $:/language/Import/\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n{{||$:/core/ui/ImportListing}}\n\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/plugin": {
"title": "$:/core/ui/ViewTemplate/plugin",
"tags": "$:/tags/ViewTemplate",
"text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n\n{{||$:/core/ui/TiddlerInfo/Advanced/PluginInfo}}\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/subtitle": {
"title": "$:/core/ui/ViewTemplate/subtitle",
"tags": "$:/tags/ViewTemplate",
"text": "<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"relativedate\"/>\n</div>\n"
},
"$:/core/ui/ViewTemplate/tags": {
"title": "$:/core/ui/ViewTemplate/tags",
"tags": "$:/tags/ViewTemplate",
"text": "<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n"
},
"$:/core/ui/ViewTemplate/title": {
"title": "$:/core/ui/ViewTemplate/title",
"tags": "$:/tags/ViewTemplate",
"text": "\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list>\n</span>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}/>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo\"/>\n\n</$reveal>\n</div>"
},
"$:/core/ui/ViewTemplate": {
"title": "$:/core/ui/ViewTemplate",
"text": "\\define frame-classes()\ntc-tiddler-frame tc-tiddler-view-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ $(tiddlerTagClasses)$\n\\end\n<$set name=\"storyTiddler\" value=<<currentTiddler>>><$set name=\"tiddlerInfoState\" value=<<qualify \"$:/state/popup/tiddler-info\">>><$tiddler tiddler=<<currentTiddler>>><div class=<<frame-classes>>><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$tiddler></$set></$set>\n"
},
"$:/core/ui/Buttons/clone": {
"title": "$:/core/ui/Buttons/clone",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
"description": "{{$:/language/Buttons/Clone/Hint}}",
"text": "<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Clone/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close-others": {
"title": "$:/core/ui/Buttons/close-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
"description": "{{$:/language/Buttons/CloseOthers/Hint}}",
"text": "<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseOthers/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close": {
"title": "$:/core/ui/Buttons/close",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
"description": "{{$:/language/Buttons/Close/Hint}}",
"text": "<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Close/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/edit": {
"title": "$:/core/ui/Buttons/edit",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
"description": "{{$:/language/Buttons/Edit/Hint}}",
"text": "<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Edit/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/export-tiddler": {
"title": "$:/core/ui/Buttons/export-tiddler",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
"description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
"text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
},
"$:/core/ui/Buttons/info": {
"title": "$:/core/ui/Buttons/info",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
"description": "{{$:/language/Buttons/Info/Hint}}",
"text": "<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Info/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/core/ui/Buttons/more-tiddler-actions",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n<$transclude tiddler=<<listItem>>/>\n</$reveal>\n</$list>\n</$set>\n</$set>\n</div>\n</$reveal>"
},
"$:/core/ui/Buttons/new-here": {
"title": "$:/core/ui/Buttons/new-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
"description": "{{$:/language/Buttons/NewHere/Hint}}",
"text": "\\define newHereButtonTags()\n[[$(currentTiddler)$]]\n\\end\n\\define newHereButton()\n<$button tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<newHereButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewHere/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>"
},
"$:/core/ui/Buttons/new-journal-here": {
"title": "$:/core/ui/Buttons/new-journal-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
"description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
"text": "\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now \"$(journalTitleTemplate)$\">> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournalHere/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set></$set></$set>"
},
"$:/core/ui/Buttons/permalink": {
"title": "$:/core/ui/Buttons/permalink",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
"description": "{{$:/language/Buttons/Permalink/Hint}}",
"text": "<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Permalink/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permaview": {
"title": "$:/core/ui/Buttons/permaview",
"tags": "$:/tags/ViewToolbar $:/tags/PageControls",
"caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
"description": "{{$:/language/Buttons/Permaview/Hint}}",
"text": "<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Permaview/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/DefaultTiddlers": {
"title": "$:/DefaultTiddlers",
"text": "GettingStarted\n"
},
"$:/temp/advancedsearch": {
"title": "$:/temp/advancedsearch",
"text": ""
},
"$:/snippets/allfields": {
"title": "$:/snippets/allfields",
"text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
},
"$:/config/AnimationDuration": {
"title": "$:/config/AnimationDuration",
"text": "400"
},
"$:/config/AutoSave": {
"title": "$:/config/AutoSave",
"text": "yes"
},
"$:/config/BitmapEditor/Colour": {
"title": "$:/config/BitmapEditor/Colour",
"text": "#ff0"
},
"$:/config/BitmapEditor/LineWidth": {
"title": "$:/config/BitmapEditor/LineWidth",
"text": "3"
},
"$:/config/DefaultSidebarTab": {
"title": "$:/config/DefaultSidebarTab",
"text": "$:/core/ui/SideBar/Open"
},
"$:/config/EditTemplateFields/Visibility/title": {
"title": "$:/config/EditTemplateFields/Visibility/title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/tags": {
"title": "$:/config/EditTemplateFields/Visibility/tags",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/text": {
"title": "$:/config/EditTemplateFields/Visibility/text",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/creator": {
"title": "$:/config/EditTemplateFields/Visibility/creator",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/created": {
"title": "$:/config/EditTemplateFields/Visibility/created",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modified": {
"title": "$:/config/EditTemplateFields/Visibility/modified",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modifier": {
"title": "$:/config/EditTemplateFields/Visibility/modifier",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/type": {
"title": "$:/config/EditTemplateFields/Visibility/type",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.title": {
"title": "$:/config/EditTemplateFields/Visibility/draft.title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.of": {
"title": "$:/config/EditTemplateFields/Visibility/draft.of",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/revision": {
"title": "$:/config/EditTemplateFields/Visibility/revision",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/bag": {
"title": "$:/config/EditTemplateFields/Visibility/bag",
"text": "hide"
},
"$:/config/EditorTypeMappings/image/gif": {
"title": "$:/config/EditorTypeMappings/image/gif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpeg": {
"title": "$:/config/EditorTypeMappings/image/jpeg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpg": {
"title": "$:/config/EditorTypeMappings/image/jpg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/png": {
"title": "$:/config/EditorTypeMappings/image/png",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/x-icon": {
"title": "$:/config/EditorTypeMappings/image/x-icon",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
"title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
"text": "text"
},
"$:/config/Navigation/UpdateAddressBar": {
"title": "$:/config/Navigation/UpdateAddressBar",
"text": "no"
},
"$:/config/Navigation/UpdateHistory": {
"title": "$:/config/Navigation/UpdateHistory",
"text": "no"
},
"$:/config/OfficialPluginLibrary": {
"title": "$:/config/OfficialPluginLibrary",
"tags": "$:/tags/PluginLibrary",
"url": "http://tiddlywiki.com/library/v5.1.8/index.html",
"caption": "{{$:/language/OfficialPluginLibrary}}",
"text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.\n"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
"text": "hide"
},
"$:/config/SaveWikiButton/Template": {
"title": "$:/config/SaveWikiButton/Template",
"text": "$:/core/save/all"
},
"$:/config/SaverFilter": {
"title": "$:/config/SaverFilter",
"text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state]] -[prefix[$:/temp]]"
},
"$:/config/SearchResults/Default": {
"title": "$:/config/SearchResults/Default",
"text": "$:/core/ui/DefaultSearchResultList"
},
"$:/config/SyncFilter": {
"title": "$:/config/SyncFilter",
"text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status]] -[prefix[$:/state]] -[prefix[$:/temp]]"
},
"$:/config/TiddlerInfo/Default": {
"title": "$:/config/TiddlerInfo/Default",
"text": "$:/core/ui/TiddlerInfo/Fields"
},
"$:/config/Toolbar/Icons": {
"title": "$:/config/Toolbar/Icons",
"text": "yes"
},
"$:/config/Toolbar/Text": {
"title": "$:/config/Toolbar/Text",
"text": "no"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
"text": "show"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/snippets/currpalettepreview": {
"title": "$:/snippets/currpalettepreview",
"text": "\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch(colour)\n<$set name=\"swatchColour\" value={{##$colour$}}>\n<div class=\"tc-swatch\" style=<<swatchStyle>>/>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\">\n<<swatch foreground>>\n<<swatch background>>\n<<swatch muted-foreground>>\n<<swatch primary>>\n<<swatch page-background>>\n<<swatch tab-background>>\n<<swatch tiddler-info-background>>\n</div>\n"
},
"$:/snippets/download-wiki-button": {
"title": "$:/snippets/download-wiki-button",
"text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
},
"$:/language": {
"title": "$:/language",
"text": "$:/languages/en-GB"
},
"$:/snippets/languageswitcher": {
"title": "$:/snippets/languageswitcher",
"text": "{{$:/language/ControlPanel/Basics/Language/Prompt}} <$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/core/macros/CSS": {
"title": "$:/core/macros/CSS",
"tags": "$:/tags/Macro",
"text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"/></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n"
},
"$:/core/macros/export": {
"title": "$:/core/macros/export",
"tags": "$:/tags/Macro",
"text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n"
},
"$:/core/macros/lingo": {
"title": "$:/core/macros/lingo",
"tags": "$:/tags/Macro",
"text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
},
"$:/core/macros/list": {
"title": "$:/core/macros/list",
"tags": "$:/tags/Macro",
"text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\")\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\">\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n"
},
"$:/core/macros/tabs": {
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n<$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$button>\n</$list>\n</div><div class=\"tc-tab-divider $class$\"/><div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tag": {
"title": "$:/core/macros/tag",
"tags": "$:/tags/Macro",
"text": "\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
},
"$:/core/macros/thumbails": {
"title": "$:/core/macros/thumbails",
"tags": "$:/tags/Macro",
"text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div></div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
},
"$:/core/macros/timeline": {
"created": "20141212105914482",
"modified": "20141212110330815",
"tags": "$:/tags/Macro",
"title": "$:/core/macros/timeline",
"type": "text/vnd.tiddlywiki",
"text": "\\define timeline-title()\n<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}>\n<<timeline-title>>\n</$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
},
"$:/core/macros/toc": {
"title": "$:/core/macros/toc",
"tags": "$:/tags/Macro",
"text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$set>\n\\end\n\n\\define toc-body(rootTag,tag,sort:\"\",itemClassFilter)\n<ol class=\"tc-toc\">\n<$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]\"\"\">\n<$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"toc-item-selected\" emptyValue=\"toc-item\">\n<li class=<<toc-item-class>>>\n<$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n<<toc-caption>>\n</$list>\n<$list filter=\"\"\"[all[current]] -[[$rootTag$]]\"\"\">\n<$macrocall $name=\"toc-body\" rootTag=\"\"\"$rootTag$\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$list>\n</li>\n</$set>\n</$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter)\n<<toc-body rootTag:\"\"\"$tag$\"\"\" tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"itemClassFilter\"\"\">>\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"toc-state\" value=<<qualify \"$:/state/toc/$tag$-$(currentTiddler)$\">>>\n<$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"toc-item-selected\" emptyValue=\"toc-item\">\n<li class=<<toc-item-class>>>\n<$link>\n<$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<<toc-caption>>\n</$link>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"toc-state\" value=<<qualify \"$:/state/toc/$tag$-$(currentTiddler)$\">>>\n<$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"toc-item-selected\" emptyValue=\"toc-item\">\n<li class=<<toc-item-class>>>\n<$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n<<toc-caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<<toc-caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter)\n<ol class=\"tc-toc toc-expandable\">\n<$list filter=\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]\">\n<$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<<toc-linked-expandable-body tag:'$tag$' sort:'$sort$' itemClassFilter:'$itemClassFilter$'>>\">\n<<toc-unlinked-expandable-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"itemClassFilter\"\"\">>\n</$list>\n</$list>\n</ol>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"toc-state\" value=<<qualify \"$:/state/toc/$tag$-$(currentTiddler)$\">>>\n<$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"toc-item-selected\" emptyValue=\"toc-item\">\n<li class=<<toc-item-class>>>\n<$link>\n<$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n<$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</$list>\n<<toc-caption>>\n</$link>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"toc-state\" value=<<qualify \"$:/state/toc/$tag$-$(currentTiddler)$\">>>\n<$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"toc-item-selected\" emptyValue=\"toc-item\">\n<li class=<<toc-item-class>>>\n<$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n<$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n<<toc-caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<<toc-caption>>\n</$button>\n</$reveal>\n</$list>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$macrocall $name=\"\"\"toc-selective-expandable\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter)\n<ol class=\"tc-toc toc-selective-expandable\">\n<$list filter=\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]\">\n<$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=\"<<toc-linked-selective-expandable-body tag:'$tag$' sort:'$sort$' itemClassFilter:'$itemClassFilter$'>>\">\n<<toc-unlinked-selective-expandable-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"$itemClassFilter$\"\"\">>\n</$list>\n</$list>\n</ol>\n\\end\n\n\\define toc-tabbed-selected-item-filter(selectedTiddler)\n[all[current]field:title{$selectedTiddler$}]\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{$selectedTiddler$}}>\n<div class=\"tc-tabbed-table-of-contents\">\n<$linkcatcher to=\"$selectedTiddler$\">\n<div class=\"tc-table-of-contents\">\n<$macrocall $name=\"toc-selective-expandable\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=<<toc-tabbed-selected-item-filter selectedTiddler:\"\"\"$selectedTiddler$\"\"\">>/>\n</div>\n</$linkcatcher>\n<div class=\"tc-tabbed-table-of-contents-content\">\n<$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"nomatch\" text=\"\">\n<$transclude mode=\"block\" tiddler=\"$template$\">\n<h1><<toc-caption>></h1>\n<$transclude mode=\"block\">$missingText$</$transclude>\n</$transclude>\n</$reveal>\n<$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"match\" text=\"\">\n$unselectedText$\n</$reveal>\n</div>\n</div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=\"\"\"$selectedTiddler$\"\"\">\n<$macrocall $name=\"toc-tabbed-external-nav\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" selectedTiddler=\"\"\"$selectedTiddler$\"\"\" unselectedText=\"\"\"$unselectedText$\"\"\" missingText=\"\"\"$missingText$\"\"\" template=\"\"\"$template$\"\"\"/>\n</$linkcatcher>\n\\end\n\n"
},
"$:/snippets/minilanguageswitcher": {
"title": "$:/snippets/minilanguageswitcher",
"text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/minithemeswitcher": {
"title": "$:/snippets/minithemeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/modules": {
"title": "$:/snippets/modules",
"text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
},
"$:/palette": {
"title": "$:/palette",
"text": "$:/palettes/Vanilla"
},
"$:/snippets/paletteeditor": {
"title": "$:/snippets/paletteeditor",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n{{$:/language/Docs/PaletteColours/$colour$}}\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<table>\n<tbody>\n<$list filter=\"[all[current]indexes[]]\" variable=\"colourName\">\n<tr>\n<td>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<$edit-text index=<<colourName>> tag=\"input\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n</$set>\n"
},
"$:/snippets/palettepreview": {
"title": "$:/snippets/palettepreview",
"text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n<$transclude tiddler=\"$:/snippets/currpalettepreview\"/>\n</$set>\n"
},
"$:/snippets/paletteswitcher": {
"title": "$:/snippets/paletteswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n<<lingo Prompt>> <$view tiddler={{$:/palette}} field=\"name\"/>\n\n<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[description]]\"><div class=\"tc-chooser-item\"><$link to={{!!title}}><div><$reveal state=\"$:/palette\" type=\"match\" text={{!!title}}>•</$reveal><$reveal state=\"$:/palette\" type=\"nomatch\" text={{!!title}}> </$reveal> ''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/></div><$transclude tiddler=\"$:/snippets/currpalettepreview\"/></$link></div>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/temp/search": {
"title": "$:/temp/search",
"text": ""
},
"$:/tags/AdvancedSearch": {
"title": "$:/tags/AdvancedSearch",
"list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
},
"$:/tags/ControlPanel": {
"title": "$:/tags/ControlPanel",
"list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
},
"$:/tags/ControlPanel/Info": {
"title": "$:/tags/ControlPanel/Info",
"list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
},
"$:/tags/ControlPanel/Plugins": {
"title": "$:/tags/ControlPanel/Plugins",
"list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
},
"$:/tags/EditTemplate": {
"title": "$:/tags/EditTemplate",
"list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
},
"$:/tags/EditToolbar": {
"title": "$:/tags/EditToolbar",
"list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
},
"$:/tags/MoreSideBar": {
"title": "$:/tags/MoreSideBar",
"list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]]",
"text": ""
},
"$:/tags/PageControls": {
"title": "$:/tags/PageControls",
"list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
},
"$:/tags/PageTemplate": {
"title": "$:/tags/PageTemplate",
"list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
"text": ""
},
"$:/tags/SideBar": {
"title": "$:/tags/SideBar",
"list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
"text": ""
},
"$:/tags/TiddlerInfo": {
"title": "$:/tags/TiddlerInfo",
"list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
"text": ""
},
"$:/tags/TiddlerInfo/Advanced": {
"title": "$:/tags/TiddlerInfo/Advanced",
"list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
},
"$:/tags/ViewTemplate": {
"title": "$:/tags/ViewTemplate",
"list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
},
"$:/tags/ViewToolbar": {
"title": "$:/tags/ViewToolbar",
"list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]]"
},
"$:/snippets/themeswitcher": {
"title": "$:/snippets/themeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$view tiddler={{$:/theme}} field=\"name\"/>\n\n<$linkcatcher to=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\"><div><$reveal state=\"$:/theme\" type=\"match\" text={{!!title}}>•</$reveal><$reveal state=\"$:/theme\" type=\"nomatch\" text={{!!title}}> </$reveal> <$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$list>\n</$linkcatcher>"
},
"$:/core/wiki/title": {
"title": "$:/core/wiki/title",
"type": "text/vnd.tiddlywiki",
"text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
},
"$:/view": {
"title": "$:/view",
"text": "classic"
},
"$:/snippets/viewswitcher": {
"title": "$:/snippets/viewswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/StoryView/\n<<lingo Prompt>> <$select tiddler=\"$:/view\">\n<$list filter=\"[storyviews[]]\">\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>"
}
}
}
@@.IMPORTANT
The widget is not yet compatible to 5.1 and newer. To fix it, edit [[$:/plugins/skeeve/newtiddler.js]] and change
* `type: "tw-navigate",`
** to `type: "tm-navigate",`
* `this.newtiddlerClass = "tw-newtiddler-button" +`
** to `this.newtiddlerClass = "tm-newtiddler-button" +`
* `this.dispatchEvent({type: "tw-edit-tiddler",`
** to `this.dispatchEvent({type: "tm-edit-tiddler",`
@@
This is a test for the highly experimental New-Tiddler-Button which allows to pre fill a skeleton tiddler with variable data.
The New-Tiddler-Button expects 2 parameters:
|Parameter |Mandatory |Explanation |h
|title |yes |the title of the new tiddler. Will get numbers appended |
|skeleton |yes |an existing tiddler which may contain variable placeholders |
|edit |no |This defines wether to open the new tiddler in edit mode. Must be one of "yes", "no", "show" or (not implemented yet) "inline". Defaults to "yes". |
The most important part lies in the skeleton! TiddlyWiki already can clone tiddlers, but you can't really prefill data of the newly created tiddler.
With `<$newtiddler>` you can put placeholders of the form `$(variable)$` ''anywhere'' in the tiddler and they will be replaced by the values of the variables set with the `<$set>` or `<$let>` widget. Please note: The placeholders can be ''anywhere''! In the tiddlers body, in fields, types, you name it…
The example skeleton used here looks like this:
|Property |Content |h
|title |skeleton 1 |
|text |This is some test: $(placeholder)$ |
|tags |$(tag1}$ |
|field1 |$(f1)$ |
|field2 |$(f2)$ |
If we now put this into our tiddler:
```
<$set name="f1" value=<<qualify "unique">> >
<$set name="f2" value="field-2">
<$set name="placeholder" value="pl1">
<$set name="placeholder" value="pl2">
<$set name="tag1" value="testtag">
<$set name="tag2" value="status">
<$newtiddler title="test" skeleton="$:/plugins/skeeve/newtiddler/SkeletonExample">Create</$newtiddler>
</$set>
</$set>
</$set>
</$set>
</$set>
</$set>
```
We get a <$set name="f1" value=<<qualify "unique">> ><$set name="f2" value="field-2"><$set name="placeholder" value="pl1"><$set name="tag1" value="testtag"><$newtiddler title="test" skeleton="$:/plugins/skeeve/newtiddler/SkeletonExample">Create</$newtiddler></$set></$set></$set></$set> button.
Clicking it, will open a new tiddler with some values pre-filled.
{
"tiddlers": {
"Untitled": {
"text": "<div class=\"tc-tiddler-title\" style=\"box-sizing: border-box; color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", "DejaVu Sans", sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;\"><div class=\"tc-titlebar\" style=\"box-sizing: border-box; font-weight: 300; font-size: 2.35em; line-height: 1.2em; color: rgb(24, 41, 85); margin: 0px; overflow: hidden;\"><h2 class=\"tc-title\" style=\"box-sizing: border-box; line-height: 1.2; font-weight: 300; font-size: 1em; display: inline;\">Carta di Identità carismatica della Famiglia Salesiana di Don Bosco</h2></div></div><div class=\"tc-subtitle\" style=\"box-sizing: border-box; font-size: 0.9em; color: rgb(192, 192, 192); font-weight: 300; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", "DejaVu Sans", sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;\">1 second ago</div><div class=\"tc-tags-wrapper\" style=\"box-sizing: border-box; margin: 4px 0px 14px; color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", "DejaVu Sans", sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;\"><span class=\"tc-tag-list-item\" style=\"box-sizing: border-box; position: relative; display: inline-block; margin-right: 7px;\"><button class=\"tc-btn-invisible tc-tag-label\" style=\"box-sizing: border-box; color: rgb(51, 51, 51); font-style: inherit; font-variant: inherit; font-weight: 300; font-stretch: inherit; font-size: 0.9em; line-height: 1.2em; font-family: inherit; margin: 0px; overflow: visible; text-transform: none; -webkit-appearance: button; cursor: pointer; padding: 0.16em 0.7em; background: none rgb(238, 204, 102); border: none; display: inline-block; white-space: nowrap; vertical-align: baseline; border-radius: 1em; fill: rgb(51, 51, 51);\">Dictionary entry</button></span><span> </span><span class=\"tc-tag-list-item\" style=\"box-sizing: border-box; position: relative; display: inline-block; margin-right: 7px;\"><button class=\"tc-btn-invisible tc-tag-label\" style=\"box-sizing: border-box; color: rgb(51, 51, 51); font-style: inherit; font-variant: inherit; font-weight: 300; font-stretch: inherit; font-size: 0.9em; line-height: 1.2em; font-family: inherit; margin: 0px; overflow: visible; text-transform: none; -webkit-appearance: button; cursor: pointer; padding: 0.16em 0.7em; background: none rgb(238, 204, 102); border: none; display: inline-block; white-space: nowrap; vertical-align: baseline; border-radius: 1em; fill: rgb(51, 51, 51);\">SC09</button></span><span> </span><span class=\"tc-tag-list-item\" style=\"box-sizing: border-box; position: relative; display: inline-block; margin-right: 7px;\"><button class=\"tc-btn-invisible tc-tag-label\" style=\"box-sizing: border-box; color: rgb(255, 255, 255); font-style: inherit; font-variant: inherit; font-weight: 300; font-stretch: inherit; font-size: 0.9em; line-height: 1.2em; font-family: inherit; margin: 0px; overflow: visible; text-transform: none; -webkit-appearance: button; cursor: pointer; padding: 0.16em 0.7em; background: none rgb(135, 139, 218); border: none; display: inline-block; white-space: nowrap; vertical-align: baseline; border-radius: 1em; fill: rgb(255, 255, 255);\">TS01</button></span></div><div class=\"tc-tiddler-body\" style=\"box-sizing: border-box; font-size: 15px; line-height: 22px; color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", "DejaVu Sans", sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;\"><h4 class=\"\" style=\"box-sizing: border-box; line-height: 1.2; font-weight: 300;\"><strong style=\"box-sizing: border-box; font-weight: bold;\">SL</strong><span> </span>is<span> </span><strong style=\"box-sizing: border-box; font-weight: bold;\">[it]</strong><span> </span>(Source Language. Use standard 2-letter codes: my (<em style=\"box-sizing: border-box;\">Burmese</em>), km (<em style=\"box-sizing: border-box;\">Khmer</em>), zh (<em style=\"box-sizing: border-box;\">Chinese</em>), en (<em style=\"box-sizing: border-box;\">English</em>), fj (<em style=\"box-sizing: border-box;\">Fijian</em>), fr (<em style=\"box-sizing: border-box;\">French</em>), el (<em style=\"box-sizing: border-box;\">Greek</em>), in (<em style=\"box-sizing: border-box;\">Indonesian</em>), it (<em style=\"box-sizing: border-box;\">Italian</em>), ja (<em style=\"box-sizing: border-box;\">Japanese</em>), ko (<em style=\"box-sizing: border-box;\">Korean</em>), lo (<em style=\"box-sizing: border-box;\">Laotian</em>), la (<em style=\"box-sizing: border-box;\">Latin</em>), ms (<em style=\"box-sizing: border-box;\">Malay</em>), sm (<em style=\"box-sizing: border-box;\">Mongolian</em>), es (<em style=\"box-sizing: border-box;\">Spanish</em>), tl (<em style=\"box-sizing: border-box;\">Tagalog</em>), th (<em style=\"box-sizing: border-box;\">Thai</em>), vi (<em style=\"box-sizing: border-box;\">Vietnamese</em>) or 3-letter in particular cases, e.g. tpi (<em style=\"box-sizing: border-box;\">Tok Pisin</em>).<span> </span><br style=\"box-sizing: border-box;\"></h4><p style=\"box-sizing: border-box;\"><strong style=\"box-sizing: border-box; font-weight: bold;\">TL</strong><span> </span>is<span> </span><strong style=\"box-sizing: border-box; font-weight: bold;\">[en]</strong><span> </span>(Target Language, as above)<span> </span><br style=\"box-sizing: border-box;\"><strong style=\"box-sizing: border-box; font-weight: bold;\">Glossed as:</strong><span> </span>Charter of Charismatic Identity of the Salesian Family of Don Bosco.</p><h3 class=\"\" style=\"box-sizing: border-box; line-height: 1.2; font-weight: 300;\"><strong style=\"box-sizing: border-box; font-weight: bold;\">Definition:</strong><span> </span>(if a precise one exists)</h3><p style=\"box-sizing: border-box;\">From presentation of the Identity Charter by the Rector Major:<span> </span><em style=\"box-sizing: border-box;\">Ciò che viene descritto in questa terza Carta, che comprende e integra le due precedenti, è l’identità carismatica della Famiglia Salesiana, ossia tutto ciò che fa riferimento alla missione, allo spirito, alle relazioni, alla formazione, ai metodi di educazione ed evangelizzazione. Certamente anche la storia del carisma, considerato nelle sue origini e nel suo sviluppo, fa parte della identità; infatti un’identità senza memoria, non avendo radici, è priva di futuro. Per questo la Carta raccoglie l’esperienza dei diversi Gruppi della Famiglia, tratteggiando, in sintesi, quella identità del carisma salesiano che è patrimonio di tutti.</em></p><p style=\"box-sizing: border-box;\">What is described in this third Charter, which includes and integrates the two previous ones, is the charismatic identity of the Salesian Family, that is, everything that refers to the mission, spirit, relationships, formation, metho</p></div>",
"title": "Untitled"
}
}
}
{
"tiddlers": {
"$:/plugins/felixhayashi/hotzone/config.js": {
"title": "$:/plugins/felixhayashi/hotzone/config.js",
"text": "/*\\\n\ntitle: $:/plugins/felixhayashi/hotzone/config.js\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n(function(){\"use strict\";exports.config={classNames:{storyRiver:\"tc-story-river\",tiddlerFrame:\"tc-tiddler-frame\",tiddlerTitle:\"tc-title\"},references:{userConfig:\"$:/config/hotzone/focusOffset\",focussedTiddlerStore:\"$:/temp/focussedTiddler\"},checkbackTime:$tw.utils.getAnimationDuration()}})();",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/hotzone/hotzone.js": {
"title": "$:/plugins/felixhayashi/hotzone/hotzone.js",
"text": "/*\\\n\ntitle: $:/plugins/felixhayashi/hotzone/hotzone.js\ntype: application/javascript\nmodule-type: startup\n\n@preserve\n\n\\*/\n(function(){\"use strict\";exports.name=\"hotzone\";exports.platforms=[\"browser\"];exports.after=[\"story\"];exports.synchronous=true;exports.startup=function(){var t=require(\"$:/plugins/felixhayashi/hotzone/config.js\").config;var e=null;var i=false;var r=document.getElementsByClassName(t.classNames.storyRiver)[0];var s=$tw.wiki.getTiddlerData(t.references.userConfig,{});var a=isNaN(parseInt(s.focusOffset))?150:parseInt(s.focusOffset);var n=function(e,i,r){if(!(e instanceof Element))return;if(!$tw.utils.hasClass(e,t.classNames.tiddlerFrame))return;var s=e.getElementsByClassName(t.classNames.tiddlerTitle)[0];if(s){var a=s.innerText||s.textContent;return a.trim()}};var o=function(t){if(!i){i=true;window.setTimeout(f,t||0)}};var l=function(e,i){$tw.wiki.addTiddler(new $tw.Tiddler({title:t.references.focussedTiddlerStore,text:e},$tw.wiki.getModificationFields()));if(i){var r=document.getElementsByClassName(\"hzone-focus\")[0];if(r){$tw.utils.removeClass(r,\"hzone-focus\")}$tw.utils.addClass(i,\"hzone-focus\")}};var f=function(){i=false;var s=$tw.wiki.getTiddler(\"$:/StoryList\");if(s&&s.fields.list.length){var o=null;var f=Number.MAX_VALUE;var d=r.children;var u=t.classNames.tiddlerFrame;for(var c=d.length;c--;){if($tw.utils.hasClass(d[c],u)){var v=d[c].getBoundingClientRect();var w=Math.min(Math.abs(a-v.top),Math.abs(a-v.bottom));if(w<f){o=d[c];f=w}}}var m=n(o);if(m!==e&&$tw.wiki.getTiddler(m)){e=m;l(e,o);return}}else if(e){e=\"\";l(e)}};var d=function(t){if(t[\"$:/HistoryList\"]){if(!$tw.wiki.tiddlerExists(\"$:/HistoryList\"))return;var e=$tw.wiki.getTiddler(\"$:/HistoryList\").fields[\"current-tiddler\"];var i=$tw.wiki.getTiddlerList(\"$:/StoryList\");var r=i.indexOf(e)>=0;if(!r)return;o($tw.utils.getAnimationDuration()+100)}else if(t[\"$:/StoryList\"]){o($tw.utils.getAnimationDuration()+100)}};var u=function(t){o(250)};$tw.wiki.addEventListener(\"change\",d);window.addEventListener(\"scroll\",u,false);u()}})();",
"type": "application/javascript",
"module-type": "startup"
},
"$:/plugins/felixhayashi/hotzone/Configuration": {
"title": "$:/plugins/felixhayashi/hotzone/Configuration",
"text": "Please see the [[GitHub page|https://github.com/felixhayashi/TW5-HotZone]] for more information on the options.\n\nSave and reload the wiki to activate changes.\n\n<table>\n <tr>\n <th align=\"left\">Focus offset:</th>\n <td><$edit-text tiddler=\"$:/config/hotzone/focusOffset\" tag=\"input\" default=\"71px\" /></td>\n </tr>\n</table>"
},
"$:/temp/focussedTiddler": {
"title": "$:/temp/focussedTiddler"
},
"$:/plugins/felixhayashi/hotzone/License": {
"title": "$:/plugins/felixhayashi/hotzone/License",
"text": "This code is released under the BSD license. For the exact terms visit:\n\nhttps://github.com/felixhayashi/TW5-HotZone/blob/master/LICENSE"
},
"$:/plugins/felixhayashi/hotzone/Readme": {
"title": "$:/plugins/felixhayashi/hotzone/Readme",
"text": "Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-HotZone]] for more information."
}
}
}
{
"tiddlers": {
"$:/plugins/felixhayashi/tiddlymap/layout": {
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline \n\n@charset \"UTF-8\";\n/********************************************************************\n * README \n ********************************************************************\n * \n * If you add some non-valid css string that won't compile and \n * unquote also doesn't help, do the following: in this stylesheet,\n * add a placeholder of the form __yourVariable__ at the point where\n * you need the string to be inserted. Then visit the gulpfile.js\n * file and add a replace instruction for your variable so it will\n * be replaced after the sass compiler has finished.\n * \n * Careful of the variable scope. Variables defined in partials\n * are visible everywhere https://gist.github.com/matyus/4339721.\n * \n *******************************************************************/\n/**\n * Returns a makedatauri macro\n */\n/**\n * Do not allow blurred background for dialogs\n * see: https://github.com/Jermolene/TiddlyWiki5/issues/1893\n */\nbody .tc-page-container-wrapper.tc-modal-displayed {\n -webkit-filter: inherit;\n -moz-filter: inherit;\n filter: inherit; }\n\nbody .tc-modal-wrapper {\n z-index: 1010; }\n body .tc-modal-wrapper .tc-modal-header svg {\n vertical-align: sub; }\n body .tc-modal-wrapper .tc-modal-header h3 {\n line-height: 10px; }\n body .tc-modal-wrapper .tc-modal-body {\n min-height: 250px;\n max-height: 70vh;\n padding-top: 0px;\n padding-bottom: 0px;\n overflow: auto; }\n body .tc-modal-wrapper .tc-modal-footer {\n padding: 8px; }\n body .tc-modal-wrapper .tc-modal-footer .tmap-dialog-button {\n font-weight: bold; }\n body .tc-modal-wrapper .tc-modal-footer .tmap-hidden-close-button {\n display: none; }\n\ntable.tmap-table tr, .tc-modal-body table.tmap-config-table tr {\n /*\n &:hover {\n background-color: #FFFFF3;\n }\n*/ }\n table.tmap-table tr:nth-child(odd), .tc-modal-body table.tmap-config-table tr:nth-child(odd) {\n background-color: #F0F0F0; }\n table.tmap-table tr:nth-child(even), .tc-modal-body table.tmap-config-table tr:nth-child(even) {\n background-color: #FFFFFF; }\n\n.tmap-save-canvas-preview {\n text-align: center; }\n .tmap-save-canvas-preview img {\n background-color: white;\n border: 1px solid lightgray;\n max-width: 100%;\n max-height: 100px; }\n\n.tmap-list-separator {\n display: block;\n background-color: #efefef;\n margin: 10px 0 5px 0;\n cursor: default;\n border-bottom: 1px dotted gray;\n font-weight: bold;\n font-size: 0.8em; }\n\n.tmap-unicode-icon {\n width: 1em;\n display: inline-block;\n text-align: center;\n color: black; }\n\nhtml .tmap-link {\n color: #5778D8; }\n html .tmap-link:hover {\n color: white;\n background: #5778D8; }\n\nhtml .tmap-small-list, html .tmap-smaller-list, html .tmap-very-small-list {\n overflow: auto;\n min-height: 2em;\n max-height: 9em;\n display: block; }\n\nhtml .tmap-smaller-list {\n max-height: 7em; }\n\nhtml .tmap-very-small-list {\n max-height: 5empx; }\n\nhtml .tc-tiddler-controls button.tmap-active-button svg {\n fill: #888888; }\n\nhtml #tmap-node-filter-dialog #tmap-filter-tips {\n font-size: 0.8em; }\n\nhtml #tmap-node-filter-dialog textarea {\n height: 100px;\n max-height: 300px;\n overflow: auto;\n width: 100%;\n font-size: 11px;\n font-family: \"Courier New\", Courier, monospace; }\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .tc-sidebar-scrollable .tmap-desktop-editor .tmap-widget:not(.tmap-fullscreen) {\n display: none; } }\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .tc-sidebar-scrollable .tmap-mobile-editor {\n display: none; }\n .tc-modal-wrapper {\n z-index: 1010; }\n .tc-modal-wrapper .tc-modal {\n boder: 1px solid #999999;\n left: calc(50% - 400px);\n width: 802px; }\n .tc-modal-wrapper .tc-modal-body {\n left: calc(50% - 400px);\n width: 800px; } }\n\n/**\n * see https://developer.mozilla.org/en/docs/Web/CSS/animation\n */\n/*** Keyframes for animations *************************************/\n@-o-keyframes fadein-keyframes {\n 0% {\n opacity: 0; }\n 100% {\n opacity: 1; } }\n\n@-moz-keyframes fadein-keyframes {\n 0% {\n opacity: 0; }\n 100% {\n opacity: 1; } }\n\n@-webkit-keyframes fadein-keyframes {\n 0% {\n opacity: 0; }\n 100% {\n opacity: 1; } }\n\n@keyframes flash fadein-keyframes {\n 0% {\n opacity: 0; }\n 100% {\n opacity: 1; } }\n\n@-o-keyframes fadeout-keyframes {\n 0% {\n opacity: 1; }\n 100% {\n opacity: 0; } }\n\n@-moz-keyframes fadeout-keyframes {\n 0% {\n opacity: 1; }\n 100% {\n opacity: 0; } }\n\n@-webkit-keyframes fadeout-keyframes {\n 0% {\n opacity: 1; }\n 100% {\n opacity: 0; } }\n\n@keyframes flash fadeout-keyframes {\n 0% {\n opacity: 1; }\n 100% {\n opacity: 0; } }\n\n.tmap-config-widget {\n background: #F0F0F0;\n padding: 5px;\n margin: 5px 0;\n box-sizing: border-box;\n display: block; }\n .tmap-config-widget .vis-network {\n display: none; }\n .tmap-config-widget .vis-configuration-wrapper {\n width: 100%; }\n .tmap-config-widget .vis-configuration-wrapper .vis-config-rangeinput {\n height: inherit;\n margin-left: 4px; }\n .tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item {\n width: 100%;\n height: inherit;\n background: none;\n padding-left: 0px;\n left: 0; }\n .tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item.tmap-vis-config-item-active .vis-config-label::after {\n content: \"(inherited)\";\n position: absolute;\n display: inline-block;\n margin-left: 10px;\n -o-animation: fadein-keyframes 1s;\n -moz-animation: fadein-keyframes 1s;\n -webkit-animation: fadein-keyframes 1s;\n animation: fadein-keyframes 1s;\n content: \"✔\";\n color: green;\n font-weight: bold;\n font-size: 15px; }\n .tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item.tmap-vis-config-item-inactive .vis-config-label::after {\n /*\n @include marker;\n content: \"✔\";\n color: lightgray;\n position: absolute;\n*/ }\n .tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item button.tmap-config-item-reset {\n vertical-align: top;\n margin-left: 5px; }\n .tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item .vis-config-range {\n width: 150px; }\n .tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item .vis-config-range::-moz-range-track {\n width: 150px !important; }\n .tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item .vis-config-label {\n width: 150px; }\n .tmap-config-widget::after {\n clear: both;\n content: \"\";\n display: block; }\n\n/*\n$color-picker-height: 200;\ndiv div.vis-color-picker {\n div.vis-color {\n width: $color-picker-height + px;\n height: $color-picker-height + px;\n }\n \n div.vis-brightness {\n top: ($color-picker-height + 30) + px;\n }\n \n div.vis-label.vis-brightness {\n top: ($color-picker-height + 43) + px;\n }\n \n div.vis-label.vis-opacity {\n top: 338px\n }\n \n div.vis-opacity {\n top: 351px;\n }\n div.vis-initial-color, vis-new-color {\n top: 381px;\n }\n \n div.vis-button {\n top: 411px;\n }\n\n}\n*/\n.tmap-flash-message {\n border: 1px solid lightgray;\n padding: 5px;\n margin: 6px 0;\n display: block;\n color: #333333; }\n .tmap-flash-message.tmap-info, .tmap-flash-message.tmap-plain, .tmap-flash-message.tmap-neutral {\n background: #F0F0F0; }\n .tmap-flash-message.tmap-info::before, .tmap-flash-message.tmap-plain::before, .tmap-flash-message.tmap-neutral::before {\n content: \"i\";\n display: inline-block;\n border-radius: 50%;\n width: 0.8em;\n border: 2px solid;\n font-family: serif;\n text-align: center;\n height: 0.8em;\n font-weight: bold;\n line-height: 0.8em;\n vertical-align: text-top;\n margin-right: 2px; }\n .tmap-flash-message.tmap-valid, .tmap-flash-message.tmap-success {\n background: #D1EED4; }\n .tmap-flash-message.tmap-valid::before, .tmap-flash-message.tmap-success::before {\n content: \"i\";\n display: inline-block;\n border-radius: 50%;\n width: 0.8em;\n border: 2px solid;\n font-family: serif;\n text-align: center;\n height: 0.8em;\n font-weight: bold;\n line-height: 0.8em;\n vertical-align: text-top;\n margin-right: 2px; }\n .tmap-flash-message.tmap-warning {\n background: #FFF6D1; }\n .tmap-flash-message.tmap-warning::before {\n content: \"\";\n display: inline-block;\n background: url(<<tmap \"datauri\" \"$:/core/images/warning\" \"\">>);\n display: inline-block;\n width: 1em;\n height: 1em;\n background-size: 100% 100%;\n vertical-align: text-top;\n margin-right: 2px; }\n .tmap-flash-message.tmap-malformed, .tmap-flash-message.tmap-invalid, .tmap-flash-message.tmap-danger {\n background: #EED5D1; }\n .tmap-flash-message.tmap-malformed::before, .tmap-flash-message.tmap-invalid::before, .tmap-flash-message.tmap-danger::before {\n content: \"\";\n display: inline-block;\n background: url(<<tmap \"datauri\" \"$:/core/images/warning\" \"\">>);\n display: inline-block;\n width: 1em;\n height: 1em;\n background-size: 100% 100%;\n vertical-align: text-top;\n margin-right: 2px; }\n\n.tmap-widget {\n background: #FFFFFF;\n width: auto;\n position: relative;\n border: 1px dotted lightgray;\n padding: 2px;\n color: #666666;\n display: block; }\n .tmap-widget.tmap-click-to-use:not(.tmap-fullscreen) .vis-network:not(.vis-active) {\n cursor: pointer; }\n .tmap-widget.tmap-click-to-use:not(.tmap-fullscreen) .vis-network:not(.vis-active) .vis-navigation {\n display: none; }\n .tmap-widget.tmap-click-to-use:not(.tmap-fullscreen) .vis-network:not(.vis-active):hover:before {\n color: gray;\n background: white;\n content: \"Click to use\";\n font-size: 14px;\n font-weight: bold;\n right: calc(50% - 65px - 5px);\n position: absolute;\n text-align: center;\n top: calc(50% - 14px - 5px);\n width: 130px;\n z-index: 2000;\n padding: 5px;\n pointer-events: none;\n background-color: rgba(255, 255, 255, 0.3); }\n .tmap-widget .tmap-loading-bar {\n display: none;\n position: absolute;\n text-align: center;\n font-size: 2em;\n padding: 10px;\n top: 50%;\n background: rgba(245, 245, 245, 0.5);\n z-index: 1;\n width: 250px;\n margin: auto;\n left: 0px;\n right: 0px; }\n .tmap-widget .tmap-vis-graph {\n height: calc(100% - 35px); }\n .tmap-widget.tmap-no-buttons .vis-navigation {\n display: none; }\n .tmap-widget.tmap-advanced-editor .tmap-topbar {\n background: #d6d9d8; }\n .tmap-widget.tmap-advanced-editor .tmap-topbar .tmap-active-button {\n color: #488DCD; }\n .tmap-widget.tmap-advanced-editor .tmap-topbar .tmap-active-button svg {\n fill: #488DCD; }\n .tmap-widget.tmap-advanced-editor .tmap-topbar .tmap-unicode-button {\n font-size: 1.5em;\n vertical-align: bottom; }\n .tmap-widget .tmap-menu-bar {\n width: 100%; }\n .tmap-widget .tmap-topbar {\n background: #F5F5F5;\n border-bottom: 1px solid lightgray;\n padding: 3px 5px;\n height: 35px;\n position: relative; }\n .tmap-widget .tmap-topbar .tmap-view-label {\n width: 100%;\n text-align: center;\n font-weight: bold;\n padding-top: 3px; }\n .tmap-widget .tmap-topbar .tmap-focus-button {\n position: absolute;\n right: 10px;\n top: 6px; }\n .tmap-widget .tmap-topbar .tmap-focus-button input {\n width: 140px; }\n .tmap-widget .tmap-topbar .tmap-search-dropdown {\n position: relative; }\n .tmap-widget .tmap-topbar .tmap-search-dropdown .tc-drop-down {\n position: absolute;\n z-index: 999;\n right: 0px; }\n .tmap-widget .tmap-topbar [hidden] {\n display: none; }\n .tmap-widget .tmap-topbar select {\n width: 30%;\n max-width: 200px;\n word-wrap: initial;\n padding: 0px; }\n .tmap-widget .tmap-topbar button {\n line-height: inherit;\n color: #666666; }\n .tmap-widget .tmap-topbar > * {\n display: inline-block; }\n .tmap-widget .tmap-topbar .tmap-separator:after {\n color: #bdbdbd;\n margin: 3px;\n content: \" | \"; }\n .tmap-widget .tmap-topbar .tc-edit-add-tag .tc-add-tag-name input {\n width: 70%; }\n .tmap-widget .tmap-topbar .tc-sidebar-header {\n text-shadow: none; }\n .tmap-widget .tmap-topbar .tc-edit-tags {\n border: none;\n padding: inherit;\n box-shadow: none; }\n\n.tmap-widget.tmap-static-mode .tmap-topbar {\n height: initial; }\n\n.tmap-widget.tmap-static-mode .tmap-vis-graph {\n text-align: center;\n cursor: not-allowed; }\n .tmap-widget.tmap-static-mode .tmap-vis-graph:not(.tmap-graph-placeholder):hover::before {\n box-shadow: 10px 10px 5px lightgray;\n color: gray;\n background: white;\n content: \"Static\";\n font-size: 18px;\n font-weight: bold;\n left: 50%;\n margin-left: -100px;\n position: absolute;\n text-align: center;\n top: 50px;\n width: 200px;\n z-index: 2000;\n padding: 5px;\n pointer-events: none; }\n .tmap-widget.tmap-static-mode .tmap-vis-graph.tmap-graph-placeholder::before {\n content: \"No Preview\";\n display: block;\n text-align: center;\n padding: 20px; }\n\n.tmap-widget .tc-drop-down {\n min-width: 170px;\n max-width: 210px;\n padding: 5px;\n margin: 5px 0; }\n .tmap-widget .tc-drop-down button, .tmap-widget .tc-drop-down a {\n padding: 0 2px;\n text-decoration: none; }\n .tmap-widget .tc-drop-down button:hover, .tmap-widget .tc-drop-down a:hover {\n color: #ffffff; }\n .tmap-widget .tc-drop-down button svg, .tmap-widget .tc-drop-down a svg {\n vertical-align: middle; }\n\n.tmap-widget .tc-block-dropdown {\n width: 370px;\n min-width: 370px;\n padding: 5px;\n margin: 15px 0 0 -370px; }\n .tmap-widget .tc-block-dropdown a {\n display: inline;\n padding: 0px; }\n\n.tmap-widget.tmap-plain-design {\n border: none;\n padding: 0px; }\n .tmap-widget.tmap-plain-design .tmap-topbar {\n display: none; }\n\n.tc-sidebar-scrollable .tmap-widget {\n position: absolute;\n min-height: 350px; }\n\n/*** vis ***********************************************************/\n.tmap-widget div.vis-network .vis-edit-mode {\n height: 26px; }\n\n.tmap-widget div.vis-network .vis-manipulation {\n height: 34px;\n border-top: 1px solid #d6d9d8;\n background: rgba(245, 245, 245, 0.7); }\n\n.tmap-widget div.vis-network .vis-navigation .vis-button.tmap-button-enabled {\n right: 15px; }\n .tmap-widget div.vis-network .vis-navigation .vis-button.tmap-button-enabled.tmap-fullscreen-button {\n bottom: 90px;\n background-image: url(<<tmap \"datauri\" \"$:/plugins/felixhayashi/tiddlymap/media/fullscreen.png\" \"\">>); }\n .tmap-widget div.vis-network .vis-navigation .vis-button.tmap-button-enabled.tmap-halfscreen-button {\n bottom: 130px;\n background-image: url(<<tmap \"datauri\" \"$:/plugins/felixhayashi/tiddlymap/media/halfscreen.png\" \"\">>); }\n\n.tmap-widget div.vis-network .vis-navigation .vis-button:hover {\n box-shadow: 0 0 3px 3px rgba(75, 75, 75, 0.3); }\n .tmap-widget div.vis-network .vis-navigation .vis-button:hover:before {\n background: beige;\n display: block;\n color: black;\n padding: 3px;\n position: relative;\n border: 1px solid lightgray;\n width: 80px;\n left: -100px;\n top: -50px;\n z-index: 1000;\n text-align: center; }\n .tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-up:before {\n left: 30px;\n content: \"Scroll up\"; }\n .tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-down:before {\n left: 30px;\n content: \"Scroll down\"; }\n .tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-right:before {\n left: 30px;\n content: \"Scroll right\"; }\n .tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-left:before {\n left: 30px;\n content: \"Scroll left\"; }\n .tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-zoomOut:before {\n content: \"Zoom out\"; }\n .tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-zoomIn:before {\n content: \"Zoom in\"; }\n .tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-zoomExtends:before {\n content: \"Fit whole graph\"; }\n .tmap-widget div.vis-network .vis-navigation .vis-button:hover.tmap-fullscreen-button:before {\n content: \"Toggle Fullscreen\"; }\n .tmap-widget div.vis-network .vis-navigation .vis-button:hover.tmap-halfscreen-button:before {\n content: \"Toggle Halfscreen\"; }\n\n.tc-dropzone > .tc-story-river .tmap-widget .vis-navigation .tmap-halfscreen-button {\n display: none; }\n\n.tc-dropzone > .tc-story-river .tmap-widget:not(.tmap-fullscreen) .vis-navigation .vis-button {\n display: none; }\n\n.tc-dropzone > .tc-story-river .tmap-widget:hover .vis-navigation .vis-button.tmap-fullscreen-button {\n display: block; }\n\n.tc-dropzone > .tc-story-river .tmap-widget:hover .vis-navigation .vis-button.vis-zoomExtends {\n display: block; }\n\n/*** Fullscreen ****************************************************/\nbody.tmap-has-fullscreen-widget {\n overflow: hidden; }\n body.tmap-has-fullscreen-widget .tmap-widget.tmap-fullscreen {\n background: white !important;\n height: 100% !important;\n width: 100% !important;\n position: fixed !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: 0 !important;\n z-index: 999 !important;\n border: none !important;\n margin: 0 !important; }\n body.tmap-has-fullscreen-widget .tc-dropzone > *.tmap-has-fullscreen-widget {\n background: white !important;\n height: 100% !important;\n width: 100% !important;\n position: fixed !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: 0 !important;\n z-index: 999 !important;\n border: none !important;\n margin: 0 !important; }\n body.tmap-has-fullscreen-widget .tc-dropzone > *:not(.tmap-has-fullscreen-widget) {\n display: none; }\n\nbody.tmap-has-halfscreen-widget .tmap-widget.tmap-halfscreen {\n background: white !important;\n height: 100% !important;\n width: 100% !important;\n position: fixed !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: 0 !important;\n z-index: 999 !important;\n border: none !important;\n margin: 0 !important;\n position: absolute !important;\n border-left: 1px solid lightgray !important; }\n\n.tc-modal-footer .tmap-hidden-close-button {\n display: none; }\n\n.tmap-modal-content {\n position: relative;\n padding: 1em 0;\n padding-top: 0; }\n .tmap-modal-content table tr td {\n vertical-align: top; }\n .tmap-modal-content :not(pre) > code {\n padding: 1px;\n font-size: 0.9em;\n position: relative;\n top: -1px; }\n .tmap-modal-content :not(pre) > code {\n color: #666666; }\n .tmap-modal-content .tc-tab-set .tc-tab-content {\n margin-top: 0.5em; }\n .tmap-modal-content .tc-image-button {\n font-size: 14px; }\n .tmap-modal-content fieldset {\n margin: 0px; }\n .tmap-modal-content fieldset legend {\n font-weight: bold; }\n\n.tc-modal-body .tmap-modal-editor > p {\n margin: 0px; }\n\n.tc-modal-body .tmap-modal-editor .tmap-template-select select {\n width: 50%; }\n\n.tc-modal-body .tmap-modal-editor .tc-tiddler-frame {\n margin: auto;\n width: auto; }\n .tc-modal-body .tmap-modal-editor .tc-tiddler-frame .tc-tiddler-controls {\n display: none; }\n .tc-modal-body .tmap-modal-editor .tc-tiddler-frame .tc-tiddler-title {\n display: none; }\n\n.tc-modal-body table {\n margin: 6px 0;\n border: none;\n width: 100%; }\n .tc-modal-body table td, .tc-modal-body table th {\n border: 1px solid lightgray; }\n .tc-modal-body table.tmap-key-value-table th {\n width: 30%;\n background-color: #F0F0F0; }\n .tc-modal-body table.tmap-config-table.tmap-large-input tr td:last-child {\n width: 20%; }\n .tc-modal-body table.tmap-config-table.tmap-small-input tr td:last-child {\n width: 60%; }\n .tc-modal-body table.tmap-config-table tr td {\n border: none;\n vertical-align: top;\n padding: 5px; }\n .tc-modal-body table.tmap-config-table tr td:first-child {\n width: 15%; }\n .tc-modal-body table.tmap-config-table tr td:last-child {\n width: 40%; }\n .tc-modal-body table.tmap-config-table tr td input:not([type=radio]), .tc-modal-body table.tmap-config-table tr td textarea, .tc-modal-body table.tmap-config-table tr td select {\n width: 100%;\n /* prevents bad looking select boxes and wrapping in textareas */\n word-wrap: normal; }\n .tc-modal-body table.tmap-config-table tr td textarea {\n height: 100%; }\n .tc-modal-body table.tmap-config-table tr td .tmap-no-stretch input, .tc-modal-body table.tmap-config-table tr td .tmap-no-stretch textarea, .tc-modal-body table.tmap-config-table tr td .tmap-no-stretch select {\n width: auto; }\n .tc-modal-body table.tmap-config-table tr td div.tmap-button-wrapper {\n text-align: center; }\n .tc-modal-body table.tmap-config-table tr td .tmap-note {\n margin-top: 0.5em; }\n .tc-modal-body table.tmap-config-table tr td .tmap-description {\n font-style: italic; }\n\n#tmap-element-type-manager > div:first-child {\n height: 50vh;\n float: left;\n width: 21%;\n background: linear-gradient(90deg, whitesmoke 0%, white 50%); }\n #tmap-element-type-manager > div:first-child .tmap-searchbar {\n padding: 1em 0 0 0; }\n #tmap-element-type-manager > div:first-child .tmap-searchbar input {\n width: calc(100% - 36px); }\n #tmap-element-type-manager > div:first-child .tmap-searchbar button {\n width: 30px;\n float: right; }\n #tmap-element-type-manager > div:first-child ul {\n height: calc(100% - 65px);\n overflow: auto;\n margin-top: 1em;\n padding: 0; }\n #tmap-element-type-manager > div:first-child ul.no-bullets li {\n list-style: none; }\n #tmap-element-type-manager > div:first-child ul li {\n white-space: nowrap; }\n #tmap-element-type-manager > div:first-child ul li .tmap-ranking {\n width: 30px;\n display: inline-block; }\n\n#tmap-element-type-manager > div:last-child {\n height: 100%;\n width: calc(79% - 15px);\n float: right; }\n #tmap-element-type-manager > div:last-child .tc-tab-set .tc-tab-content {\n overflow: auto;\n height: 50vh; }\n\n.tmap-manage-node-types .tmap-edge-type-specific {\n display: none !important; }\n\n.tmap-manage-edge-types .tmap-node-type-specific {\n display: none !important; }\n\n.tmap-modal-fullscreen-editor .tc-tab-content p {\n margin: 1em 0; }\n\n.tmap-has-pending-template {\n background-color: #C1EDC4; }\n\n#tmap-search-table td {\n border: none;\n padding-left: 0px; }\n #tmap-search-table td:first-child {\n width: 30px; }\n\n#tmap-search-table b {\n display: inline-block;\n width: 40px;\n text-align: right; }\n\n#tmap-search-table ul {\n padding-left: 20px;\n margin: 1em 0 0 0; }\n #tmap-search-table ul li {\n list-style: inherit; }\n #tmap-search-table ul button {\n text-align: left; }\n\nbutton.tmap-go-back {\n margin-bottom: 1em;\n font-weight: bold; }\n\n.tmap-badges > span, .tmap-badge {\n background: gray;\n font-size: 11px;\n color: white;\n padding: 3px 4px;\n display: inline-block;\n font-weight: bold;\n border-radius: 2px;\n line-height: 1em;\n cursor: help; }\n .tmap-badges > span.tmap-red-flag, .tmap-badge.tmap-red-flag {\n background: red; }\n\n/**\n * See http://stackoverflow.com/questions/3331353/transitions-on-the-display-property\n */\n.tmap-popup {\n display: none;\n position: absolute;\n opacity: 0;\n transition: opacity 0.3s ease; }\n .tmap-popup.tmap-popup-active {\n opacity: 1; }\n\n.tmap-tooltip {\n box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);\n min-width: 100px;\n min-height: 50px;\n max-width: <<tmap option config.sys.popups.width>>;\n max-height: <<tmap option config.sys.popups.height>>;\n padding: 5px;\n resize: both;\n overflow: auto;\n cursor: auto;\n font-family: verdana;\n font-size: 14px;\n background-color: #f5f4ed;\n border: 1px solid #808074;\n -moz-border-radius: 3px;\n -webkit-border-radius: 3px;\n border-radius: 3px; }\n .tmap-tooltip[style*=\"height\"] {\n max-height: none !important; }\n .tmap-tooltip[style*=\"width\"] {\n max-width: none !important; }\n\n.tmap-quick-connect {\n font-size: 0.7em; }\n .tmap-quick-connect p {\n padding-left: 0;\n padding-right: 0; }\n .tmap-quick-connect .tc-drop-down {\n padding: 5px;\n width: 250px;\n white-space: normal;\n line-height: 1em;\n position: absolute;\n z-index: 1000;\n right: 50px;\n background: linear-gradient(45deg, whitesmoke 0%, white 50%, whitesmoke 100%); }\n .tmap-quick-connect .tc-drop-down:first-child {\n padding-top: 0;\n margin-top: 0; }\n .tmap-quick-connect .tc-drop-down .title {\n margin: 1.5em 0 0.5em 0;\n font-weight: bold;\n color: gray; }\n .tmap-quick-connect .tc-drop-down select {\n width: 80px;\n word-wrap: initial; }\n .tmap-quick-connect .tc-drop-down table {\n width: 100%;\n border: none;\n margin: 0.5em 0; }\n .tmap-quick-connect .tc-drop-down table td, .tmap-quick-connect .tc-drop-down table th {\n padding: 3px 3px 3px 0;\n vertical-align: middle;\n font-weight: normal;\n border: none; }\n .tmap-quick-connect .tc-drop-down table td table, .tmap-quick-connect .tc-drop-down table th table {\n margin: 0; }\n .tmap-quick-connect .tc-drop-down .tmap-quick-connect-search-bar, .tmap-quick-connect .tc-drop-down .tmap-quick-connect-existing-bar {\n background: #F1F1F1;\n margin-top: 0;\n border-bottom: 1px solid #D5D5D5;\n border-top: 1px solid #D5D5D5; }\n .tmap-quick-connect .tc-drop-down table.tmap-quick-connect-search-bar td, .tmap-quick-connect .tc-drop-down th {\n padding: 5px; }\n .tmap-quick-connect .tc-drop-down .tmap-quick-connect-existing-bar {\n padding: 5px; }\n .tmap-quick-connect .tc-drop-down .tmap-connection-table th, .tmap-quick-connect .tc-drop-down .tmap-connection-table td {\n text-align: left;\n padding: 1px 1px 1px 0; }\n .tmap-quick-connect .tc-drop-down .tmap-connection-table button {\n width: 20px;\n padding: 0px; }\n .tmap-quick-connect .tc-drop-down .tmap-scroll-table {\n height: 120px;\n overflow: auto;\n display: block; }\n .tmap-quick-connect .tc-drop-down hr {\n border: 0;\n height: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n border-bottom: 1px solid rgba(255, 255, 255, 0.3); }\n .tmap-quick-connect .tc-drop-down a {\n display: inline;\n padding: 0;\n color: #5778d8;\n background: transparent; }\n .tmap-quick-connect .tc-drop-down a:hover {\n background: transparent;\n color: #5778d8;\n text-decoration: underline; }\n .tmap-quick-connect .tc-drop-down button {\n display: inline-block;\n padding: 0px 3px;\n text-align: center;\n color: #333333;\n line-height: 1.0; }\n .tmap-quick-connect .tc-drop-down button:hover {\n color: #ffffff; }\n .tmap-quick-connect .tc-drop-down button svg {\n fill: inherit; }\n .tmap-quick-connect .tc-drop-down button svg:hover {\n fill: #ffffff; }\n",
"title": "$:/plugins/felixhayashi/tiddlymap/layout",
"type": "text/vnd.tiddlywiki",
"tags": [
"$:/tags/Stylesheet"
]
},
"$:/plugins/felixhayashi/tiddlymap/js/AbstractEdgeTypeSubscriber": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/AbstractEdgeTypeSubscriber",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/AbstractEdgeTypeSubscriber\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\nvar _EdgeType = require('$:/plugins/felixhayashi/tiddlymap/js/EdgeType');\n\nvar _EdgeType2 = _interopRequireDefault(_EdgeType);\n\nvar _exception = require('$:/plugins/felixhayashi/tiddlymap/js/exception');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Super class for all edge type subscribers.\n */\nvar AbstractEdgeTypeSubscriber = function () {\n\n /**\n * @param {Object.<id, EdgeType>} allEdgeTypes - A list of all EdgeType instances that\n * are currently in the system. Each subscriber may use this list to build up an\n * index or perform mappings etc. Note that this list does not include types that are\n * just about to be inserted. Therefore, this list should only be used, if needed,\n * in the context of edge retrieval via loadEdges.\n * @param {number} [priority} - Subscribers with a higher priority get executed earlier\n * @param {boolean} [skipOthers] - In case of insert and delete operations: Whether or\n * not to skip any subsequent subscribers that also can handle the edge type\n * but have a lower priority assigned.\n * @param {boolean} [ignore] - Whether or not to completely ignore this subscriber.\n * This flag is useful if you want to dynamically at runtime whether or not to\n * include the subscriber.\n */\n function AbstractEdgeTypeSubscriber(allEdgeTypes) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$priority = _ref.priority,\n priority = _ref$priority === undefined ? 0 : _ref$priority,\n _ref$skipOthers = _ref.skipOthers,\n skipOthers = _ref$skipOthers === undefined ? true : _ref$skipOthers,\n _ref$ignore = _ref.ignore,\n ignore = _ref$ignore === undefined ? false : _ref$ignore;\n\n _classCallCheck(this, AbstractEdgeTypeSubscriber);\n\n this.allEdgeTypes = allEdgeTypes;\n this.priority = priority;\n this.skipOthers = skipOthers;\n this.ignore = ignore;\n }\n\n /**\n * DI\n * @param {Tracker} tracker\n */\n\n\n _createClass(AbstractEdgeTypeSubscriber, [{\n key: 'setTracker',\n value: function setTracker(tracker) {\n this.tracker = tracker;\n }\n\n /**\n * Returns all edges stored in the specified tiddler.\n *\n * @interface\n * @param {Tiddler} tObj - the tiddler that holds the references.\n * @param {Object<TiddlerReference, boolean>} toWL - a whitelist of tiddlers that are allowed to\n * be included in the result.\n * @param {Object<id, EdgeType>} [typeWL] - a whitelist that defines that only Tiddlers that are linked\n * via a type specified in the list may be included in the result. If typeWL is not passed it means\n * all types are included.\n * @return {Object<Id, Edge>|null}\n */\n\n }, {\n key: 'loadEdges',\n value: function loadEdges(tObj, toWL, typeWL) {\n\n throw new _exception.MissingOverrideError(this, 'loadEdges');\n }\n\n /**\n * Whether or not this subscriber instance can handle an edge of the given type.\n *\n * @interface\n * @param {EdgeType} edgeType\n * @return boolean\n */\n\n }, {\n key: 'canHandle',\n value: function canHandle(edgeType) {\n\n throw new _exception.MissingOverrideError(this, 'canHandle');\n }\n\n /**\n * Called by the Adapter whenever a type is inserted\n *\n * @param {Tiddler} tObj - the tiddler that holds the references.\n * @param {Edge} edge - the edge to be deleted\n * @param {EdgeType} type\n */\n\n }, {\n key: 'insertEdge',\n value: function insertEdge(tObj, edge, type) {}\n\n // optional\n\n /**\n * Called by the Adapter whenever a type is deleted\n *\n * @param {Tiddler} tObj - the tiddler that holds the references.\n * @param {Edge} edge - the edge to be deleted\n * @param {EdgeType} type\n */\n\n }, {\n key: 'deleteEdge',\n value: function deleteEdge(tObj, edge, type) {\n\n // optional\n\n }\n }]);\n\n return AbstractEdgeTypeSubscriber;\n}();\n\n/*** Exports *******************************************************/\n\nexports.default = AbstractEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/AbstractEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _Edge = require('$:/plugins/felixhayashi/tiddlymap/js/Edge');\n\nvar _Edge2 = _interopRequireDefault(_Edge);\n\nvar _exception = require('$:/plugins/felixhayashi/tiddlymap/js/exception');\n\nvar _AbstractRefEdgeTypeSubscriber = require('$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber');\n\nvar _AbstractRefEdgeTypeSubscriber2 = _interopRequireDefault(_AbstractRefEdgeTypeSubscriber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/**\n * @constructor\n */\nvar AbstractMagicEdgeTypeSubscriber = function (_AbstractRefEdgeTypeS) {\n _inherits(AbstractMagicEdgeTypeSubscriber, _AbstractRefEdgeTypeS);\n\n /**\n * @inheritDoc\n */\n function AbstractMagicEdgeTypeSubscriber(allEdgeTypes, options) {\n _classCallCheck(this, AbstractMagicEdgeTypeSubscriber);\n\n // later used for edge retrieval to identify those fields that hold connections\n var _this = _possibleConstructorReturn(this, (AbstractMagicEdgeTypeSubscriber.__proto__ || Object.getPrototypeOf(AbstractMagicEdgeTypeSubscriber)).call(this, allEdgeTypes, options));\n\n _this.edgeTypesByFieldName = _utils2.default.makeHashMap();\n\n for (var id in allEdgeTypes) {\n\n var edgeType = allEdgeTypes[id];\n if (_this.canHandle(edgeType)) {\n _this.edgeTypesByFieldName[edgeType.name] = edgeType;\n }\n }\n\n return _this;\n }\n\n /**\n * Returns all references to other tiddlers stored in the specified tiddler.\n *\n * @interface\n * @param {Tiddler} tObj - the tiddler that holds the references.\n * @param {String} fieldName - the name of the field to get the reference from.\n * @param {Object<TiddlerReference, boolean>} toWL - a whitelist of tiddlers that are allowed to\n * be included in the result.\n * @return {Object<Id, Edge>|null}\n */\n\n\n _createClass(AbstractMagicEdgeTypeSubscriber, [{\n key: 'getReferencesFromField',\n value: function getReferencesFromField(tObj, fieldName, toWL) {\n\n throw new _exception.MissingOverrideError(this, 'getReferencesFromField');\n }\n }, {\n key: 'getReferences',\n\n\n /**\n * @inheritDoc\n */\n value: function getReferences(tObj, toWL, typeWL) {\n\n var refsGroupedByType = _utils2.default.makeHashMap();\n var fieldNames = tObj.fields;\n\n for (var fieldName in fieldNames) {\n\n var type = this.edgeTypesByFieldName[fieldName];\n\n if (!type || typeWL && !typeWL[type.id]) continue;\n\n var toRefs = this.getReferencesFromField(tObj, fieldName, toWL);\n\n if (toRefs && toRefs.length) {\n refsGroupedByType[type.id] = toRefs;\n }\n }\n\n return refsGroupedByType;\n }\n }]);\n\n return AbstractMagicEdgeTypeSubscriber;\n}(_AbstractRefEdgeTypeSubscriber2.default);\n\n/*** Exports *******************************************************/\n\nexports.default = AbstractMagicEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/AbstractMagicEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _Edge = require('$:/plugins/felixhayashi/tiddlymap/js/Edge');\n\nvar _Edge2 = _interopRequireDefault(_Edge);\n\nvar _exception = require('$:/plugins/felixhayashi/tiddlymap/js/exception');\n\nvar _AbstractEdgeTypeSubscriber = require('$:/plugins/felixhayashi/tiddlymap/js/AbstractEdgeTypeSubscriber');\n\nvar _AbstractEdgeTypeSubscriber2 = _interopRequireDefault(_AbstractEdgeTypeSubscriber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/*** Code **********************************************************/\n\n/**\n * Parent class for all subscribers that retrieve or store\n * non-TiddlyMap edges ({@see TmapEdgeTypeSubscriber) from a tiddler,\n * for example tag or list references.\n */\nvar AbstractRefEdgeTypeSubscriber = function (_AbstractEdgeTypeSubs) {\n _inherits(AbstractRefEdgeTypeSubscriber, _AbstractEdgeTypeSubs);\n\n function AbstractRefEdgeTypeSubscriber() {\n _classCallCheck(this, AbstractRefEdgeTypeSubscriber);\n\n return _possibleConstructorReturn(this, (AbstractRefEdgeTypeSubscriber.__proto__ || Object.getPrototypeOf(AbstractRefEdgeTypeSubscriber)).apply(this, arguments));\n }\n\n _createClass(AbstractRefEdgeTypeSubscriber, [{\n key: 'loadEdges',\n\n\n /**\n * @inheritDoc\n */\n value: function loadEdges(tObj, toWL, typeWL) {\n\n // references to other tiddlers grouped by their edge type\n var refsByType = this.getReferences(tObj, toWL, typeWL);\n\n if (!refsByType || !_utils2.default.hasElements(refsByType)) return;\n\n var fromId = tObj.fields['tmap.id'];\n var idByT = $tm.tracker.getIdsByTiddlers();\n var allETy = this.allEdgeTypes;\n var fromTRef = _utils2.default.getTiddlerRef(tObj);\n\n var edges = _utils2.default.makeHashMap();\n\n for (var typeId in refsByType) {\n\n var toRefs = refsByType[typeId];\n\n if (!toRefs) {\n continue;\n }\n\n var type = allETy[typeId];\n for (var i = toRefs.length; i--;) {\n var toTRef = toRefs[i];\n\n if (!toTRef || !$tw.wiki.tiddlerExists(toTRef) || _utils2.default.isSystemOrDraft(toTRef) || toWL && !toWL[toTRef]) {\n continue;\n }\n\n var id = type.id + $tw.utils.hashString(fromTRef + toTRef);\n edges[id] = new _Edge2.default(fromId, idByT[toTRef], type.id, id);\n }\n }\n\n return edges;\n }\n\n /**\n * Returns a list of tiddlers (= tiddler names) that are targeted by the specified tiddler.\n * Note: All referenced tiddlers have to be grouped by their edge type.\n *\n * @interface\n * @param {Tiddler} tObj - the tiddler that holds the references.\n * @param {Object<TiddlerReference, boolean>} toWL - a whitelist of tiddlers that are allowed to\n * be included in the result.\n * @param {Object<id, EdgeType>} typeWL - a whitelist that defines that only Tiddlers that are linked\n * via a type specified in the list may be included in the result.\n * @return {Object<string, TiddlerReference[]>|null} a list of referenced tiddlers grouped by their edge type.\n */\n\n }, {\n key: 'getReferences',\n value: function getReferences(tObj, toWL, typeWL) {\n\n throw new _exception.MissingOverrideError(this, 'getReferences');\n }\n }]);\n\n return AbstractRefEdgeTypeSubscriber;\n}(_AbstractEdgeTypeSubscriber2.default);\n\n/*** Exports *******************************************************/\n\nexports.default = AbstractRefEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/AbstractRefEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/EdgeTypeSubscriberRegistry": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/EdgeTypeSubscriberRegistry",
"text": "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/EdgeTypeSubscriberRegistry\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/**\n * Registry to store and retrieve EdgeTypeSubcriber modules that are responsible\n * for handling the retrieval, insertion and deletion of EdgeType objects.\n */\nvar EdgeTypeSubscriberRegistry = function () {\n\n /**\n * @param {AbstractEdgeTypeSubscriber[]} subscribers\n * @param {EdgeType[]} allEdgeTypes\n * @param {Tracker} tracker\n */\n function EdgeTypeSubscriberRegistry(subscribers, allEdgeTypes, tracker) {\n _classCallCheck(this, EdgeTypeSubscriberRegistry);\n\n this.subscriberClasses = subscribers;\n this.tracker = tracker;\n\n this.updateIndex(allEdgeTypes);\n }\n\n /**\n * Gets all matching subscribers for a type.\n *\n * @param {EdgeType} edgeType\n * @returns AbstractEdgeTypeSubscriber[]\n */\n\n\n _createClass(EdgeTypeSubscriberRegistry, [{\n key: \"getAllForType\",\n value: function getAllForType(edgeType) {\n\n var allSubscribers = this.allSubscribers;\n var subscribersForType = [];\n\n for (var i = 0, l = allSubscribers.length; i < l; i++) {\n\n if (allSubscribers[i].canHandle(edgeType)) {\n\n subscribersForType.push(allSubscribers[i]);\n\n if (allSubscribers[i].skipOthers) {\n break;\n }\n }\n }\n\n return subscribersForType;\n }\n\n /**\n * Gets all subscribers.\n *\n * @returns AbstractEdgeTypeSubscriber[]\n */\n\n }, {\n key: \"getAll\",\n value: function getAll() {\n\n return this.allSubscribers;\n }\n\n /**\n * Indexes all subscribers. Moreover, subscribers get linked to the edge\n * types that currently exist in the wiki.\n *\n * This method should be called everytime after an edge type is added or\n * removed in the system.\n *\n * @param {EdgeType[]} allEdgeTypes\n */\n\n }, {\n key: \"updateIndex\",\n value: function updateIndex(allEdgeTypes) {\n\n var allSubscribers = [];\n\n // instantiate and register all active subscriber modules\n var subscriberClass = this.subscriberClasses;\n for (var moduleName in subscriberClass) {\n\n var subscriber = new subscriberClass[moduleName](allEdgeTypes);\n subscriber.setTracker(this.tracker);\n\n // ignore all subscribers that have their ignore flag set to false\n if (subscriber.ignore === true) {\n continue;\n }\n\n allSubscribers.push(subscriber);\n }\n\n // sort subscribers by priority\n allSubscribers.sort(function (s1, s2) {\n return s2.priority - s1.priority;\n });\n\n this.allSubscribers = allSubscribers;\n }\n }]);\n\n return EdgeTypeSubscriberRegistry;\n}();\n\n/*** Exports *******************************************************/\n\nexports.default = EdgeTypeSubscriberRegistry;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/EdgeTypeSubscriberRegistry.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/tmap": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/tmap",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TmapEdgeTypeSubscriber = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _Edge = require('$:/plugins/felixhayashi/tiddlymap/js/Edge');\n\nvar _Edge2 = _interopRequireDefault(_Edge);\n\nvar _AbstractEdgeTypeSubscriber = require('$:/plugins/felixhayashi/tiddlymap/js/AbstractEdgeTypeSubscriber');\n\nvar _AbstractEdgeTypeSubscriber2 = _interopRequireDefault(_AbstractEdgeTypeSubscriber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/tmap\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/*** Code **********************************************************/\n\n/**\n * TiddlyMap's original EdgeTypeSubscriber. It will store and retrieve edges by relying on\n * json stored in a tiddler field.\n *\n * @constructor\n */\nvar TmapEdgeTypeSubscriber = function (_AbstractEdgeTypeSubs) {\n _inherits(TmapEdgeTypeSubscriber, _AbstractEdgeTypeSubs);\n\n function TmapEdgeTypeSubscriber(allEdgeTypes) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, TmapEdgeTypeSubscriber);\n\n return _possibleConstructorReturn(this, (TmapEdgeTypeSubscriber.__proto__ || Object.getPrototypeOf(TmapEdgeTypeSubscriber)).call(this, allEdgeTypes, _extends({ priority: 0 }, options)));\n }\n\n /**\n * @inheritDoc\n */\n\n\n _createClass(TmapEdgeTypeSubscriber, [{\n key: 'loadEdges',\n value: function loadEdges(tObj, toWL, typeWL) {\n\n var connections = _utils2.default.parseFieldData(tObj, 'tmap.edges');\n if (!connections) {\n return;\n }\n\n var tById = this.tracker.getTiddlersByIds();\n var fromId = tObj.fields['tmap.id'];\n\n var edges = _utils2.default.makeHashMap();\n\n for (var conId in connections) {\n\n var con = connections[conId];\n var toTRef = tById[con.to];\n if (toTRef && (!toWL || toWL[toTRef]) && (!typeWL || typeWL[con.type])) {\n\n edges[conId] = new _Edge2.default(fromId, con.to, con.type, conId);\n }\n }\n\n return edges;\n }\n\n /**\n * @inheritDoc\n */\n\n }, {\n key: 'insertEdge',\n value: function insertEdge(tObj, edge, type) {\n\n // load existing connections\n var connections = _utils2.default.parseFieldData(tObj, 'tmap.edges', {});\n\n // assign new id if not present yet\n edge.id = edge.id || _utils2.default.genUUID();\n // add to connections object\n connections[edge.id] = { to: edge.to, type: type.id };\n\n // save\n _utils2.default.writeFieldData(tObj, 'tmap.edges', connections, $tm.config.sys.jsonIndentation);\n\n return edge;\n }\n\n /**\n * @inheritDoc\n */\n\n }, {\n key: 'deleteEdge',\n value: function deleteEdge(tObj, edge, type) {\n\n if (!edge.id) return;\n\n // load\n var connections = _utils2.default.parseFieldData(tObj, 'tmap.edges', {});\n\n // delete\n delete connections[edge.id];\n\n // save\n _utils2.default.writeFieldData(tObj, 'tmap.edges', connections, $tm.config.sys.jsonIndentation);\n\n return edge;\n }\n\n /**\n * @inheritDoc\n */\n\n }, {\n key: 'canHandle',\n value: function canHandle(edgeType) {\n\n return true;\n }\n }]);\n\n return TmapEdgeTypeSubscriber;\n}(_AbstractEdgeTypeSubscriber2.default);\n\n/*** Exports *******************************************************/\n\nexports.TmapEdgeTypeSubscriber = TmapEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/TmapEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/field": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/field",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FieldEdgeTypeSubscriber = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _AbstractMagicEdgeTypeSubscriber = require('$:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber');\n\nvar _AbstractMagicEdgeTypeSubscriber2 = _interopRequireDefault(_AbstractMagicEdgeTypeSubscriber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/field\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n\n/**\n * The FieldEdgeTypeSubscriber deals with connections that are stored in form of tiddler fields.\n * In this case one field can only hold one connection.\n *\n * If an EdgeType with a \"tw-field\" namespace is inserted or deleted, the type's name\n * is interpreted as field name and the connection is stored or removed in a tiddler\n * field with of that name.\n *\n * E.g. creating an edge between the tiddlers \"Betsy\" and \"Dave\" with the type\n * tw-field:husband will create a field \"husband\" inside the \"Betsy\" tiddler and set\n * \"Dave\" as value.\n\n * Note: A single field can only hold one connection.\n *\n * @see http://tiddlymap.org/#tw-field\n *\n * @inheritDoc\n * @constructor\n */\nvar FieldEdgeTypeSubscriber = function (_AbstractMagicEdgeTyp) {\n _inherits(FieldEdgeTypeSubscriber, _AbstractMagicEdgeTyp);\n\n /**\n * @inheritDoc\n */\n function FieldEdgeTypeSubscriber(allEdgeTypes) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, FieldEdgeTypeSubscriber);\n\n return _possibleConstructorReturn(this, (FieldEdgeTypeSubscriber.__proto__ || Object.getPrototypeOf(FieldEdgeTypeSubscriber)).call(this, allEdgeTypes, _extends({ priority: 10 }, options)));\n }\n\n /**\n * @inheritDoc\n */\n\n\n _createClass(FieldEdgeTypeSubscriber, [{\n key: 'canHandle',\n value: function canHandle(edgeType) {\n\n return edgeType.namespace === 'tw-field';\n }\n\n /**\n * @override\n */\n\n }, {\n key: 'getReferencesFromField',\n value: function getReferencesFromField(tObj, fieldName, toWL) {\n\n // wrap in array\n return [tObj.fields[fieldName]];\n }\n\n /**\n * Stores and maybe overrides an edge in this tiddler\n */\n\n }, {\n key: 'insertEdge',\n value: function insertEdge(tObj, edge, type) {\n\n var toTRef = this.tracker.getTiddlerById(edge.to);\n if (toTRef == null) {\n // null or undefined\n return;\n }\n\n // only use the name without the private marker or the namespace\n _utils2.default.setField(tObj, type.name, toTRef);\n\n return edge;\n }\n }, {\n key: 'deleteEdge',\n\n\n /**\n * Deletes an edge in this tiddler\n */\n value: function deleteEdge(tObj, edge, type) {\n\n var toTRef = this.tracker.getTiddlerById(edge.to);\n\n if (toTRef == null) {\n // null or undefined\n return;\n }\n\n // only use the name without the private marker or the namespace\n _utils2.default.setField(tObj, type.name, undefined);\n\n return edge;\n }\n }]);\n\n return FieldEdgeTypeSubscriber;\n}(_AbstractMagicEdgeTypeSubscriber2.default);\n\n/*** Exports *******************************************************/\n\nexports.FieldEdgeTypeSubscriber = FieldEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/magicEdgeTypeSubscriber/FieldEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/filter": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/filter",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FilterEdgeTypeSubstriber = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _AbstractMagicEdgeTypeSubscriber = require('$:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber');\n\nvar _AbstractMagicEdgeTypeSubscriber2 = _interopRequireDefault(_AbstractMagicEdgeTypeSubscriber);\n\nvar _widget = require('$:/core/modules/widgets/widget.js');\n\nvar _widget2 = _interopRequireDefault(_widget);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/filter\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/*** Code **********************************************************/\n\n/**\n * The FilterEdgeTypeSubstriber deals with connections that are stored inside\n * tiddler fields via a dynamic filter.\n *\n * @see http://tiddlymap.org/#tw-filter\n * @see https://github.com/felixhayashi/TW5-TiddlyMap/issues/206\n */\nvar FilterEdgeTypeSubstriber = function (_AbstractMagicEdgeTyp) {\n _inherits(FilterEdgeTypeSubstriber, _AbstractMagicEdgeTyp);\n\n /**\n * @inheritDoc\n */\n function FilterEdgeTypeSubstriber(allEdgeTypes) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, FilterEdgeTypeSubstriber);\n\n return _possibleConstructorReturn(this, (FilterEdgeTypeSubstriber.__proto__ || Object.getPrototypeOf(FilterEdgeTypeSubstriber)).call(this, allEdgeTypes, _extends({ priority: 10 }, options)));\n }\n\n /**\n * @inheritDoc\n */\n\n\n _createClass(FilterEdgeTypeSubstriber, [{\n key: 'canHandle',\n value: function canHandle(edgeType) {\n\n return edgeType.namespace === 'tw-filter';\n }\n\n /**\n * @override\n */\n\n }, {\n key: 'getReferencesFromField',\n value: function getReferencesFromField(tObj, fieldName, toWL) {\n\n var filter = tObj.fields[fieldName];\n\n // Solves https://github.com/felixhayashi/TW5-TiddlyMap/issues/278\n var parentWidget = new _widget2.default.widget({});\n parentWidget.setVariable(\"currentTiddler\", tObj.fields.title);\n var widget = new _widget2.default.widget({}, { \"parentWidget\": parentWidget });\n //noinspection UnnecessaryLocalVariableJS\n var toRefs = _utils2.default.getMatches(filter, toWL, widget);\n\n return toRefs;\n }\n\n /**\n * Stores and maybe overrides an edge in this tiddler\n */\n\n }, {\n key: 'insertEdge',\n value: function insertEdge(tObj, edge, type) {\n\n if (!edge.to) {\n return;\n }\n\n // get the name without the private marker or the namespace\n var name = type.name;\n var currentFilter = tObj.fields[name] || \"\";\n var toTRef = this.tracker.getTiddlerById(edge.to);\n // by treating the toTRef as a list of one, we can make\n // it safe to append to any filter.\n // \"tiddler\" -> \"tiddler\"\n // \"tiddler with spaces\" -> \"[[tiddler with spaces]]\"\n var safe_toTRef = $tw.utils.stringifyList([toTRef]);\n\n if (currentFilter.length > 0) {\n safe_toTRef = \" \" + safe_toTRef;\n }\n\n // save\n _utils2.default.setField(tObj, name, currentFilter + safe_toTRef);\n\n return edge;\n }\n }]);\n\n return FilterEdgeTypeSubstriber;\n}(_AbstractMagicEdgeTypeSubscriber2.default);\n\n/*** Exports *******************************************************/\n\nexports.FilterEdgeTypeSubstriber = FilterEdgeTypeSubstriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/magicEdgeTypeSubscriber/FilterEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/list": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/list",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ListEdgeTypeSubscriber = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _AbstractMagicEdgeTypeSubscriber = require('$:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber');\n\nvar _AbstractMagicEdgeTypeSubscriber2 = _interopRequireDefault(_AbstractMagicEdgeTypeSubscriber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/list\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/*** Code **********************************************************/\n\n/**\n * The ListEdgeTypeSubstriber deals with connections that are stored inside\n * tiddler fields in a tiddler-list format.\n *\n * If an EdgeType with a 'tw-list\" namespace is inserted or deleted, the type's name\n * is interpreted as field name and the list of connections is stored or removed in a tiddler\n * field with of that name. Each outgoing connection to a tiddler is stored by\n * inserting the title the edge is pointing to into a list.\n *\n * Say you the user creates a connection between tiddler \"Dawna Dozal\" and\n * tiddler \"Toney Thacker\" and names the connection \"tw-list:friends\". Then a field\n * named \"friends\" will be created in tiddler \"Dawna Dozal\" and \"Toney Thacker\" will be\n * added to this field.\n *\n * @see http://tiddlymap.org/#tw-list\n */\nvar ListEdgeTypeSubscriber = function (_AbstractMagicEdgeTyp) {\n _inherits(ListEdgeTypeSubscriber, _AbstractMagicEdgeTyp);\n\n /**\n * @inheritDoc\n */\n function ListEdgeTypeSubscriber(allEdgeTypes) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, ListEdgeTypeSubscriber);\n\n return _possibleConstructorReturn(this, (ListEdgeTypeSubscriber.__proto__ || Object.getPrototypeOf(ListEdgeTypeSubscriber)).call(this, allEdgeTypes, _extends({ priority: 10 }, options)));\n }\n\n /**\n * @inheritDoc\n */\n\n\n _createClass(ListEdgeTypeSubscriber, [{\n key: 'canHandle',\n value: function canHandle(edgeType) {\n\n return edgeType.namespace === 'tw-list';\n }\n\n /**\n * @override\n */\n\n }, {\n key: 'getReferencesFromField',\n value: function getReferencesFromField(tObj, fieldName, toWL) {\n\n return $tw.utils.parseStringArray(tObj.fields[fieldName]);\n }\n\n /**\n * Stores and maybe overrides an edge in this tiddler\n */\n\n }, {\n key: 'insertEdge',\n value: function insertEdge(tObj, edge, type) {\n\n if (!edge.to) {\n return;\n }\n\n // get the name without the private marker or the namespace\n var name = type.name;\n\n var list = $tw.utils.parseStringArray(tObj.fields[name]);\n // we need to clone the array since tiddlywiki might directly\n // returned the auto-parsed field value (as in case of tags, or list)\n // and this array would be read only!\n list = (list || []).slice();\n\n // transform\n var toTRef = this.tracker.getTiddlerById(edge.to);\n\n list.push(toTRef);\n\n // save\n _utils2.default.setField(tObj, name, $tw.utils.stringifyList(list));\n\n return edge;\n }\n }, {\n key: 'deleteEdge',\n\n\n /**\n * Deletes an edge in this tiddler\n */\n value: function deleteEdge(tObj, edge, type) {\n\n var list = $tw.utils.parseStringArray(tObj.fields[type.name]);\n // we need to clone the array since tiddlywiki might directly\n // returned the auto-parsed field value (as in case of tags, or list)\n // and this array would be read only!\n list = (list || []).slice();\n\n // transform\n var toTRef = this.tracker.getTiddlerById(edge.to);\n\n var index = list.indexOf(toTRef);\n if (index > -1) {\n list.splice(index, 1);\n }\n\n // @see https://github.com/felixhayashi/TW5-TiddlyMap/issues/288\n var stringList = void 0;\n if (list.length > 0) {\n stringList = $tw.utils.stringifyList(list);\n }\n // save\n _utils2.default.setField(tObj, type.name, stringList);\n\n return edge;\n }\n }]);\n\n return ListEdgeTypeSubscriber;\n}(_AbstractMagicEdgeTypeSubscriber2.default);\n\n/*** Exports *******************************************************/\n\nexports.ListEdgeTypeSubscriber = ListEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/magicEdgeTypeSubscriber/ListEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/link": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/link",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LinkEdgeTypeSubscriber = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _AbstractRefEdgeTypeSubscriber = require('$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber');\n\nvar _AbstractRefEdgeTypeSubscriber2 = _interopRequireDefault(_AbstractRefEdgeTypeSubscriber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/link\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n\n/**\n * The LinkEdgeTypeSubscriber deals with connections that are stored inside\n * a tiddler' text field.\n *\n * Note: This subscriber only retrieves edges, however doesn't store or delete them.\n *\n * @see http://tiddlymap.org/#tw-body\n */\nvar LinkEdgeTypeSubscriber = function (_AbstractRefEdgeTypeS) {\n _inherits(LinkEdgeTypeSubscriber, _AbstractRefEdgeTypeS);\n\n /**\n * @inheritDoc\n */\n function LinkEdgeTypeSubscriber(allEdgeTypes) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, LinkEdgeTypeSubscriber);\n\n return _possibleConstructorReturn(this, (LinkEdgeTypeSubscriber.__proto__ || Object.getPrototypeOf(LinkEdgeTypeSubscriber)).call(this, allEdgeTypes, _extends({ priority: 20 }, options)));\n }\n\n /**\n * @inheritDoc\n */\n\n\n _createClass(LinkEdgeTypeSubscriber, [{\n key: 'canHandle',\n value: function canHandle(edgeType) {\n\n return edgeType.id === 'tw-body:link';\n }\n\n /**\n * @inheritDoc\n */\n\n }, {\n key: 'getReferences',\n value: function getReferences(tObj, toWL, typeWL) {\n\n if (typeWL && !typeWL['tw-body:link']) {\n return;\n }\n\n var toRefs = $tw.wiki.getTiddlerLinks(tObj.fields.title);\n\n if (!toRefs || !toRefs.length) {\n return;\n }\n\n return { 'tw-body:link': toRefs };\n }\n }]);\n\n return LinkEdgeTypeSubscriber;\n}(_AbstractRefEdgeTypeSubscriber2.default);\n\n/*** Exports *******************************************************/\n\nexports.LinkEdgeTypeSubscriber = LinkEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/refEdgeTypeSubscriber/LinkEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/transclude": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/transclude",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TranscludeEdgeTypeSubscriber = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _AbstractRefEdgeTypeSubscriber = require('$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber');\n\nvar _AbstractRefEdgeTypeSubscriber2 = _interopRequireDefault(_AbstractRefEdgeTypeSubscriber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/transclude\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n\n/**\n * The TranscludeEdgeTypeSubscriber retrieves connections that result tiddler transclusions.\n *\n * Note: This subscriber only retrieves edges, however doesn't store or delete them. It only\n * works if the `$tw.wiki.getTiddlerTranscludes` method is present in the wiki.\n */\nvar TranscludeEdgeTypeSubscriber = function (_AbstractRefEdgeTypeS) {\n _inherits(TranscludeEdgeTypeSubscriber, _AbstractRefEdgeTypeS);\n\n /**\n * @inheritDoc\n */\n function TranscludeEdgeTypeSubscriber(allEdgeTypes) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, TranscludeEdgeTypeSubscriber);\n\n return _possibleConstructorReturn(this, (TranscludeEdgeTypeSubscriber.__proto__ || Object.getPrototypeOf(TranscludeEdgeTypeSubscriber)).call(this, allEdgeTypes, _extends({\n priority: 20,\n ignore: typeof $tw.wiki.getTiddlerTranscludes !== 'function'\n }, options)));\n }\n\n /**\n * @inheritDoc\n */\n\n\n _createClass(TranscludeEdgeTypeSubscriber, [{\n key: 'canHandle',\n value: function canHandle(edgeType) {\n\n return edgeType.id === 'tw-body:transclude';\n }\n\n /**\n * @inheritDoc\n */\n\n }, {\n key: 'getReferences',\n value: function getReferences(tObj, toWL, typeWL) {\n\n if (typeWL && !typeWL['tw-body:transclude']) {\n return;\n }\n\n var toRefs = $tw.wiki.getTiddlerTranscludes(tObj.fields.title);\n\n if (!toRefs || !toRefs.length) {\n return;\n }\n\n return { 'tw-body:transclude': toRefs };\n }\n }]);\n\n return TranscludeEdgeTypeSubscriber;\n}(_AbstractRefEdgeTypeSubscriber2.default);\n\n/*** Exports *******************************************************/\n\nexports.TranscludeEdgeTypeSubscriber = TranscludeEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/refEdgeTypeSubscriber/TranscludeEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/Edge": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/Edge",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/Edge\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/*** Code **********************************************************/\n\n/**\n * @constructor\n */\nvar Edge = function Edge(from, to, type, id) {\n _classCallCheck(this, Edge);\n\n this.from = from;\n this.to = to;\n this.type = type;\n this.id = id || _utils2.default.genUUID();\n};\n\n/*** Exports *******************************************************/\n\nexports.default = Edge;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/Edge.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/EdgeType": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/EdgeType",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _MapElementType2 = require('$:/plugins/felixhayashi/tiddlymap/js/MapElementType');\n\nvar _MapElementType3 = _interopRequireDefault(_MapElementType2);\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _environment = require('$:/plugins/felixhayashi/tiddlymap/js/lib/environment');\n\nvar env = _interopRequireWildcard(_environment);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/EdgeType\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/*** Code **********************************************************/\n\n/**\n * This class is used to abstract edge types. It facilitates the parsing\n * of style information, the translation of type names into actual type data\n * or the persistance of edge type data.\n *\n * Note: EdgeType instances are immutable (frozen).\n */\nvar EdgeType = function (_MapElementType) {\n _inherits(EdgeType, _MapElementType);\n\n /**\n * @param {EdgeTypeId} id\n * @param {Object} [data] @see http://visjs.org/docs/network/edges.html\n */\n function EdgeType(id, data) {\n _classCallCheck(this, EdgeType);\n\n // we do not simply use the provided id but disassemble and\n // reassemble it again to ensure the id is well formatted.\n var _EdgeType$getIdParts = EdgeType.getIdParts(id),\n marker = _EdgeType$getIdParts.marker,\n namespace = _EdgeType$getIdParts.namespace,\n name = _EdgeType$getIdParts.name;\n\n id = EdgeType.getId(marker, namespace, name);\n\n // call the parent constructor\n\n var _this = _possibleConstructorReturn(this, (EdgeType.__proto__ || Object.getPrototypeOf(EdgeType)).call(this, id, env.path.edgeTypes, EdgeType.fieldMeta, data));\n\n _this.id = id;\n _this.marker = marker;\n _this.name = name;\n _this.namespace = namespace;\n\n var arrows = (_this.style || {}).arrows;\n\n if (arrows) {\n\n _this.invertedArrow = isArrowEnabled(arrows, 'from');\n _this.toArrow = isArrowEnabled(arrows, 'to') || isArrowEnabled(arrows, 'middle');\n // determine if bi arrows (either from+to or no arrows)\n _this.biArrow = _this.invertedArrow === _this.toArrow;\n\n if (_this.biArrow) {\n _this.toArrow = true;\n _this.invertedArrow = true;\n }\n } else {\n\n _this.toArrow = true;\n }\n\n Object.freeze(_this);\n\n return _this;\n }\n\n /**\n * Returns an object holding the parts that make up the edge type id.\n *\n * @param {EdgeTypeId} id\n * @return {{marker: (*|string), namespace: (*|string), name: (*|string)}}\n */\n\n\n _createClass(EdgeType, [{\n key: 'getLabel',\n value: function getLabel() {\n\n return this.label || this.name;\n }\n }], [{\n key: 'getIdParts',\n value: function getIdParts() {\n var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n\n id = _utils2.default.getWithoutPrefix(id, env.path.edgeTypes + '/');\n var match = id.match(edgeTypeRegex) || [];\n\n return {\n marker: match[1] || '',\n namespace: match[3] && match[2] || '',\n name: match[3] || match[2] || ''\n };\n }\n }, {\n key: 'getId',\n\n\n /**\n * Creates an {@link EdgeTypeId} from a set of parts that make up the id.\n * If it is not possible to create the id from the parts, the default\n * edge type 'tmap:unknown' is returned.\n *\n * @param {string} marker\n * @param {string} namespace\n * @param {string} name\n * @return {EdgeTypeId}\n */\n value: function getId() {\n var marker = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var namespace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var name = arguments[2];\n\n\n return name ? marker + (namespace && namespace + ':') + name : 'tmap:unknown';\n }\n }]);\n\n return EdgeType;\n}(_MapElementType3.default);\n\n/**\n * @see https://github.com/babel/babel/issues/4854\n * @param {string} id - Either the edge type id (name)\n * or a tiddler reference denoting the type or an\n * `EdgeType` object (that is directly bounced back). If the\n * id can be translated into a tiddler object that resides in\n * the edge type path, then its data is retrieved automatically.\n */\n\n\nEdgeType.getInstance = function (id) {\n return id instanceof EdgeType ? id : new EdgeType(id);\n};\n\nEdgeType.fieldMeta = _extends({}, _MapElementType3.default.fieldMeta, {\n 'label': {},\n 'show-label': {}\n});\n\n/**\n *\n * @param {Object} arrows\n * @param {('from'|'to'|'middle')} direction\n * @return {boolean}\n */\nvar isArrowEnabled = function isArrowEnabled(arrows, direction) {\n\n var arrow = arrows[direction];\n\n if (arrow == null && direction === 'to') {\n // if the arrow is not further specified and its direction is to\n // we regard it as enabled.\n return true;\n }\n\n return (typeof arrow === 'undefined' ? 'undefined' : _typeof(arrow)) === 'object' ? arrow.enabled !== false : arrow === true;\n};\n\n/**\n * An edge-type id consists of the following parts of which the\n * first two are optional: `[marker][namespace:]name`\n *\n * The colon is not considered to be part of the namespace.\n */\nvar edgeTypeRegex = new RegExp('^(_?)([^:_][^:]*):?([^:]*)');\n\n/*** Exports *******************************************************/\n\nexports.default = EdgeType;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/EdgeType.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/MapElementType": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/MapElementType",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/MapElementType\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*** Code **********************************************************/\n\n/**\n * @abstract\n */\nvar MapElementType = function () {\n function MapElementType(id, root, fieldMeta, data) {\n _classCallCheck(this, MapElementType);\n\n this.id = id;\n this.root = root;\n this._fieldMeta = fieldMeta;\n this.fullPath = this.root + '/' + this.id;\n this.isShipped = $tw.wiki.getSubTiddler($tm.path.pluginRoot, this.fullPath);\n\n // finally get the data\n this._load(data || this.fullPath);\n }\n\n /**\n * Load the type's data. Depending on the constructor arguments,\n * the data source can be a tiddler, a type store\n *\n * @private\n */\n\n\n _createClass(MapElementType, [{\n key: '_load',\n value: function _load(data) {\n\n if (!data) {\n\n return;\n }\n\n if (typeof data === 'string') {\n // assume id or full path\n\n var isFullPath = _utils2.default.startsWith(data, this.root);\n var tRef = isFullPath ? data : this.root + '/' + data;\n this._loadFromTiddler(tRef);\n } else if (data instanceof $tw.Tiddler) {\n\n this._loadFromTiddler(data);\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n // = type or a data object\n\n for (var field in this._fieldMeta) {\n this[field] = data[field];\n }\n }\n }\n\n /**\n * Retrieve all data from the tiddler provided. If a shadow tiddler\n * with the same id exists, its data is merged during the load\n * process.\n *\n * @private\n */\n\n }, {\n key: '_loadFromTiddler',\n value: function _loadFromTiddler(tiddler) {\n\n var tObj = _utils2.default.getTiddler(tiddler);\n\n if (!tObj) {\n\n return;\n }\n\n var shadowTObj = $tw.wiki.getSubTiddler($tm.path.pluginRoot, this.fullPath) || {};\n\n // copy object to allow manipulation of the data\n var rawData = $tw.utils.extend({}, shadowTObj.fields, tObj.fields);\n // allow parsers to transform the raw field data\n for (var field in this._fieldMeta) {\n\n var parser = this._fieldMeta[field].parse;\n var rawVal = rawData[field];\n\n this[field] = parser ? parser.call(this, rawVal) : rawVal;\n }\n }\n\n /**\n * Method to determine whether or not this type exists. A type\n * exists if a tiddler with the type's id can be found below\n * the type's root path.\n *\n * @return {boolean} True if the type exists, false otherwise.\n */\n\n }, {\n key: 'exists',\n value: function exists() {\n\n return _utils2.default.tiddlerExists(this.fullPath);\n }\n }, {\n key: 'setStyle',\n value: function setStyle(style, isMerge) {\n\n // preprocessing: try to turn string into json\n if (typeof style === 'string') {\n\n style = _utils2.default.parseJSON(style);\n }\n\n // merge or override\n if ((typeof style === 'undefined' ? 'undefined' : _typeof(style)) === 'object') {\n\n if (isMerge) {\n\n _utils2.default.merge(this.style, style);\n } else {\n\n this.style = style;\n }\n }\n }\n\n /**\n * Store the type object as tiddler in the wiki. If the `tRef`\n * property is not provided, the default type path prefix\n * will be used with the type id appended. Stringifiers provided in\n * the field meta object (that was passed to the constructor) are\n * called.\n *\n * @param {string} [tRef] - If `tRef` is provided, the type\n * data will be written into this tiddler and the id property\n * is added as extra field value. Only do this is only for\n * dumping purposes!\n * @param {boolean} [silently=false] do not update the modification date\n */\n\n }, {\n key: 'save',\n value: function save(tRef, silently) {\n\n if (!tRef) {\n\n tRef = this.fullPath;\n } else if (typeof tRef !== 'string') {\n\n return;\n }\n\n // also add an empty text field to guard against\n // https://github.com/Jermolene/TiddlyWiki5/issues/2025\n var fields = {\n title: tRef,\n text: ''\n };\n\n if (!_utils2.default.startsWith(tRef, this.root)) {\n\n // = not the standard path for storing this type!\n // in this case we add the id to the output.\n fields.id = this.id;\n }\n\n // allow parsers to transform the raw field data\n for (var field in this._fieldMeta) {\n\n var stringify = this._fieldMeta[field].stringify;\n\n fields[field] = stringify ? stringify.call(this, this[field]) : this[field];\n }\n\n if (!this.exists()) {\n // newly created\n Object.assign(fields, $tw.wiki.getCreationFields());\n }\n\n if (silently !== true) {\n // add modification date to the output;\n Object.assign(fields, $tw.wiki.getModificationFields());\n }\n\n $tw.wiki.addTiddler(new $tw.Tiddler(fields));\n }\n }]);\n\n return MapElementType;\n}();\n\n/**\n * A list of fields that are used as data identifiers. Only these\n * listed keys are acknowledged by the load and save functions in\n * this class.\n *\n * This object resembles tw's field modules that are used by\n * `boot.js` to decide how fields are parsed and stringified again.\n */\n\n\nMapElementType.fieldMeta = {\n 'description': {},\n 'style': {\n parse: _utils2.default.parseJSON,\n stringify: JSON.stringify\n },\n 'modified': {}, // translation handled by TW's core\n 'created': {} // translation handled by TW's core\n};\n\n/*** Exports *******************************************************/\n\nexports.default = MapElementType;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/MapElementType.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/NodeType": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/NodeType",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _MapElementType2 = require('$:/plugins/felixhayashi/tiddlymap/js/MapElementType');\n\nvar _MapElementType3 = _interopRequireDefault(_MapElementType2);\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/NodeType\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/*** Code **********************************************************/\n\n/**\n * Used to define the type of a node.\n *\n * Note: NodeType instances are immutable (frozen).\n */\nvar NodeType = function (_MapElementType) {\n _inherits(NodeType, _MapElementType);\n\n function NodeType(id, data) {\n _classCallCheck(this, NodeType);\n\n id = typeof id === 'string' ? _utils2.default.getWithoutPrefix(id, $tm.path.nodeTypes + '/') : 'tmap:unknown';\n\n // call the parent constructor\n\n var _this = _possibleConstructorReturn(this, (NodeType.__proto__ || Object.getPrototypeOf(NodeType)).call(this, id, $tm.path.nodeTypes, NodeType.fieldMeta, data));\n\n Object.freeze(_this);\n\n return _this;\n }\n\n /**\n * Get all tiddlers that inherit this type.\n *\n * @param {Array<TiddlerReference>} [src=$tw.wiki.allTitles()] - A list\n * of tiddlers that is searched for inheritors.\n * @return {Array<TiddlerReference>} The inheritors.\n */\n\n\n _createClass(NodeType, [{\n key: 'getInheritors',\n value: function getInheritors(src) {\n\n return this.scope ? _utils2.default.getMatches(this.scope, src || $tw.wiki.allTitles()) : [];\n }\n }]);\n\n return NodeType;\n}(_MapElementType3.default);\n\n/**\n * @see https://github.com/babel/babel/issues/4854\n * @param {string} id - Either the edge type id (name)\n * or a tiddler reference denoting the type or an\n * `EdgeType` object (that is directly bounced back). If the\n * id can be translated into a tiddler object that resides in\n * the edge type path, then its data is retrieved automatically.\n */\n\n\nNodeType.getInstance = function (id) {\n return id instanceof NodeType ? id : new NodeType(id);\n};\n\nNodeType.fieldMeta = _extends({}, _MapElementType3.default.fieldMeta, {\n 'view': {},\n 'priority': {\n parse: function parse(raw) {\n return isNaN(raw) ? 1 : parseInt(raw);\n },\n stringify: function stringify(num) {\n return _utils2.default.isInteger(num) ? num.toString() : '1';\n }\n },\n 'scope': {\n stringify: _utils2.default.getWithoutNewLines\n },\n 'fa-icon': {},\n 'tw-icon': {}\n});\n\n/*** Exports *******************************************************/\n\nexports.default = NodeType;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/NodeType.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nvar _EdgeType = require('$:/plugins/felixhayashi/tiddlymap/js/EdgeType');\n\nvar _EdgeType2 = _interopRequireDefault(_EdgeType);\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _environment = require('$:/plugins/felixhayashi/tiddlymap/js/lib/environment');\n\nvar env = _interopRequireWildcard(_environment);\n\nvar _exception = require('$:/plugins/felixhayashi/tiddlymap/js/exception');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*** Code **********************************************************/\n\n/**\n * This class abstracts the various pieces that together make up the\n * view such as map, edge filter, node filter, config etc.\n * If {@code isCreate} is not specified, the viewAbstraction will only\n * represent the view and not create it or any missing part of it.\n */\nvar ViewAbstraction = function () {\n\n /**\n *\n * @param {string|ViewAbstraction|Tiddler} view - The view\n * @param {Object} options\n * @param {boolean} [options.isCreate] - True if the view should be created and override\n * any existing view, false otherwise.\n */\n function ViewAbstraction(view) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, ViewAbstraction);\n\n if (view instanceof ViewAbstraction) {\n\n // bounce back the object we received\n return view;\n }\n\n this._registerPaths(view);\n\n if (options.isCreate) {\n\n if (!this.configTRef) {\n\n var name = _utils2.default.getRandomLabel({ plural: true });\n this.configTRef = $tw.wiki.generateNewTitle($tm.path.views + '/' + name);\n }\n\n this._createView(options);\n } else if (!ViewAbstraction.exists(this.getRoot())) {\n // no valid config path\n\n throw new ResourceNotFoundException('ViewAbstraction', view);\n }\n }\n\n /**\n * Returns true if this view cannot be edited.\n * As a general rule, all views that come as plugins are locked.\n *\n * @return {boolean}\n */\n\n\n _createClass(ViewAbstraction, [{\n key: 'isLocked',\n value: function isLocked() {\n\n return $tw.wiki.isShadowTiddler(this.configTRef);\n }\n\n /**\n * Gives the view a chance to rebuild its properties cache.\n *\n * @param {Updates} updates\n * @return {boolean} True if changes affect parts of the view.\n */\n\n }, {\n key: 'update',\n value: function update(updates) {\n var changedTiddlers = updates.changedTiddlers;\n\n\n if (updates[env.path.edgeTypes] || _utils2.default.hasKeyWithPrefix(changedTiddlers, this.getRoot())) {\n this._clearCaches();\n\n return true;\n }\n\n return false;\n }\n\n /**\n * clones the tiddler denoted via tRef and uses it as placeholder\n * for this view when a widget using this view is displayed in\n * static mode\n *\n * @param {Tiddler} tiddler\n */\n\n }, {\n key: 'addPlaceholder',\n value: function addPlaceholder(tiddler) {\n\n _utils2.default.cp(_utils2.default.getTiddlerRef(tiddler), this.snapshotTRef, true);\n }\n\n /**\n * A view exists if the the view's root exists as tiddler in the store.\n *\n * @deprecated\n *\n * @return {boolean}\n */\n\n }, {\n key: 'exists',\n value: function exists() {\n\n return ViewAbstraction.exists(this);\n }\n\n /**\n * The path to the config tiddler that represents the view.\n *\n * @return {TiddlerReference}\n */\n\n }, {\n key: 'getRoot',\n value: function getRoot() {\n\n return this.configTRef;\n }\n\n /**\n * Returns this view's creation date.\n *\n * @param {boolean} [asString] True if the returned value should be a string in any case.\n * @return {string|object|undefined} The creation date in the specified output format.\n */\n\n }, {\n key: 'getCreationDate',\n value: function getCreationDate(asString) {\n\n var date = $tw.wiki.getTiddler(this.configTRef).fields['created'];\n\n if (asString) {\n // note: th will be translated as well!\n return date instanceof Date ? $tw.utils.formatDateString(date, 'DDth MMM YYYY') : '';\n }\n\n return date;\n }\n\n /**\n * The label of the view (which is basically the root-path's basename).\n *\n * @return {string} The label (name) of the view.\n */\n\n }, {\n key: 'getLabel',\n value: function getLabel() {\n\n return _utils2.default.getBasename(this.configTRef);\n }\n\n /**\n * Method to remove the view and its configuration.\n * It will make the view non-existent.\n *\n * Note: Do not use the object anymore after you called this function!\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n\n // delete the view and all tiddlers stored in its path (map, edge-filter etc.)\n _utils2.default.deleteTiddlers(_utils2.default.getMatches('[prefix[' + this.configTRef + ']]'));\n }\n\n /**\n * Returns all tiddlers include tiddlymap widgets that reference this view.\n */\n\n }, {\n key: 'getOccurrences',\n value: function getOccurrences() {\n\n var filter = '[regexp:text[<\\\\$(tiddlymap|tmap).*?view=.' + this.getLabel() + '..*?>]]';\n return _utils2.default.getMatches(filter);\n }\n\n /**\n * Renames the view.\n *\n * @param {string} newLabel\n * @return {boolean}\n */\n\n }, {\n key: 'rename',\n value: function rename(newLabel) {\n\n if (typeof newLabel !== 'string') {\n\n return false;\n }\n\n if (_utils2.default.inArray('/', newLabel)) {\n\n $tm.notify('A view name must not contain any \"/\"');\n\n return false;\n }\n\n // keep a reference to the old label before we change it\n var oldLabel = this.getLabel();\n\n // start the renaming\n var newRoot = env.path.views + '/' + newLabel;\n var oldRoot = this.getRoot();\n\n _utils2.default.mv(oldRoot, newRoot, true);\n\n // update references\n\n if ($tm.config.sys.defaultView === oldLabel) {\n _utils2.default.setEntry($tm.ref.sysUserConf, 'defaultView', newLabel);\n }\n\n if ($tm.config.sys.liveTab.fallbackView === oldLabel) {\n _utils2.default.setEntry($tm.ref.sysUserConf, 'liveTab.fallbackView', newLabel);\n }\n\n $tw.wiki.each(function (tObj, tRef) {\n\n if (tObj.fields['tmap.open-view'] === oldLabel) {\n\n // update global node data fields referencing this view\n _utils2.default.setField(tRef, 'tmap.open-view', newLabel);\n\n return;\n }\n\n if (ViewAbstraction.exists(tRef)) {\n\n // update all local node data referencing this view\n var view = new ViewAbstraction(tRef);\n var nodes = view.getNodeData();\n\n for (var id in nodes) {\n if (nodes[id]['open-view'] === oldLabel) {\n nodes[id]['open-view'] = newLabel;\n }\n }\n\n view.saveNodeData(nodes);\n }\n });\n\n // clear caches registered to previous root before registering new paths\n this._clearCaches();\n this._registerPaths(newLabel);\n }\n\n /**\n * All configurations that are toggled via checkboxes to have a value\n * either `true` or `false` can be accessed via this method.\n *\n * @param {string} name - The configs name without the `_config` prefix.\n * @return {boolean} True if the configuration is enabled, false otherwise.\n */\n\n }, {\n key: 'isEnabled',\n value: function isEnabled(name) {\n\n return _utils2.default.isTrue(this.getConfig(name), false);\n }\n\n /**\n * Returns a configuration value relating to the given name. If no name\n * is given, an object with all configurations is returned.\n *\n * @param {string} [name] - Instead of all configurations being returned,\n * only the configuration named name is returned. The initial \"config.\"\n * may be omitted.\n * @result {string|Object} If `type` is not specified an object containing\n * all configurations is returned, otherwise a single value will be returned.\n */\n\n }, {\n key: 'getConfig',\n value: function getConfig(name) {\n var _this = this;\n\n var config = $tw.wiki.getCacheForTiddler(this.configTRef, \"tmap-config\", function () {\n\n var fields = _utils2.default.getTiddler(_this.configTRef).fields;\n return _utils2.default.getPropertiesByPrefix(fields, 'config.');\n });\n\n var prefixlessName = name && _utils2.default.startsWith(name, 'config.') ? name : 'config.' + name;\n\n return name ? config[prefixlessName] : config;\n }\n\n /**\n * Enables the api user to modify the view's configuration.\n *\n * In case two arguments are provided, the first is assumed to be the property\n * name and the second the value to be set.\n *\n * In case a single object is provided as argument, it is treated as a key-value\n * collection and each property in this object is saved as config.\n *\n * @param {*} args\n */\n\n }, {\n key: 'setConfig',\n value: function setConfig() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args[0] == null) {\n // null or undefined\n\n return;\n }\n\n if (args.length === 1 && _typeof(args[0]) === 'object') {\n\n for (var prop in args[0]) {\n this.setConfig(prop, args[0][prop]);\n }\n } else if (args.length === 2 && typeof args[0] === 'string') {\n\n var _prop = _utils2.default.getWithoutPrefix(args[0], 'config.');\n var val = args[1];\n\n if (val === undefined) {\n\n return;\n }\n\n var config = this.getConfig();\n\n if (val === null) {\n\n $tm.logger('debug', 'Removing config', _prop);\n delete config['config.' + _prop];\n } else {\n\n if (_prop === 'edge_type_namespace') {\n var match = val.match(/[^:]+/);\n val = match ? match[0] : '';\n }\n }\n\n $tm.logger('log', 'Setting config', _prop, val);\n config['config.' + _prop] = val;\n\n // save\n $tw.wiki.addTiddler(new $tw.Tiddler(_utils2.default.getTiddler(this.configTRef), config));\n } else {\n // not allowed\n\n throw new (Function.prototype.bind.apply(_exception.InvalidArgumentException, [null].concat(args)))();\n }\n }\n\n /**\n * Whether this view represents the 'live view'\n *\n * @return {boolean}\n */\n\n }, {\n key: 'isLiveView',\n value: function isLiveView() {\n\n return this.getLabel() === $tm.misc.liveViewLabel;\n }\n\n /**\n * Whether the node is already explicitly contained in the view's node filter,\n * i.e. whether it is explicitly referenced by its title.\n *\n * @private\n *\n * @param {Node} node\n * @return {string}\n */\n\n }, {\n key: '_isNodeIncludedById',\n value: function _isNodeIncludedById(node) {\n\n var regex = $tw.utils.escapeRegExp(ViewAbstraction._getNodeIdFilterPart(node));\n\n return this.getNodeFilter('raw').match(regex);\n }\n\n /**\n * Sets and rebuilds the node filter according to the expression provided.\n *\n * @param {string} expr - A tiddlywiki filter expression.\n * @param {boolean} force\n */\n\n }, {\n key: 'setNodeFilter',\n value: function setNodeFilter(expr, force) {\n\n expr = expr.replace(/[\\n\\r]/g, ' ');\n\n if (this.getNodeFilter('raw') === expr) {\n // already up to date;\n // This check is critical to prevent recursion!\n return;\n }\n\n _utils2.default.setField(this.nodeFilterTRef, 'filter', expr);\n\n $tm.logger('debug', 'Node filter set to', expr);\n }\n\n /**\n * Sets and rebuilds the edge type filter according to the expression provided.\n *\n * @param {string} expr - A tiddlywiki filter expression.\n */\n\n }, {\n key: 'setEdgeTypeFilter',\n value: function setEdgeTypeFilter(expr) {\n\n expr = expr.replace(/[\\n\\r]/g, ' ');\n\n if (this.getEdgeTypeFilter('raw') === expr) {\n // already up to date\n // This check is critical to prevent recursion!\n return;\n }\n\n _utils2.default.setField(this.edgeTypeFilterTRef, 'filter', expr);\n\n $tm.logger('debug', 'Edge filter set to', expr);\n }\n\n /**\n * Method to append a filter part to the current filter (*or*-style).\n * The node's tmap.id will be used in the filter to reference the corresponding tiddler.\n *\n * @param {Node} node\n */\n\n }, {\n key: 'addNode',\n value: function addNode(node) {\n\n if (!this._isNodeIncludedById(node)) {\n\n // @see https://github.com/felixhayashi/TW5-TiddlyMap/issues/285\n if (_utils2.default.isTrue($tm.config.sys.alwaysAddNodeIdToViewFilter) || !_utils2.default.isMatch(node.tRef, this.getNodeFilter('compiled'))) {\n\n var part = ViewAbstraction._getNodeIdFilterPart(node);\n var separator = ' ';\n this.setNodeFilter(this.getNodeFilter('raw') + separator + part);\n }\n\n this.saveNodePosition(node);\n }\n }\n\n /**\n * Removes a node from the the view filter that has been\n * explicitly added before.\n *\n * ATTENTION: Never remove the node data (i.e. style and positions)\n * from the node-data store. This will be done by a garbage\n * collector. See Adapter.prototype._removeObsoleteViewData\n *\n * @return {boolean} True if node was removed, false otherwise.\n * Note: false is also returned if the node did not exist before.\n */\n\n }, {\n key: 'removeNode',\n value: function removeNode(nodeId) {\n\n if (!this._isNodeIncludedById(nodeId)) {\n\n return false;\n }\n\n var part = ViewAbstraction._getNodeIdFilterPart(nodeId);\n var f = this.getNodeFilter('raw').replace(part, '');\n\n this.setNodeFilter(f);\n\n if (this.getNodeData(nodeId)) {\n this.saveNodeData(nodeId, null);\n }\n\n return true;\n }\n\n /**\n * Method will return a tiddlywiki edge-type filter that is used to\n * decide which edge types are displayed by the graph.\n *\n * Note: needs to be recalculated if the collection of edge types changed\n * in the wiki.\n *\n * @param {(\"raw\"|\"pretty\"|\"matches\"|\"whitelist\")} [type]\n * Use this param to control the output type.\n * @result {*}\n * Depends on the type param:\n * - raw: the original filter string\n * - pretty: the prettyfied filter string for usage in textareas\n * - matches: {Array<string>} all matches\n * - whitelist: A lookup table where all matches are true\n */\n\n }, {\n key: 'getEdgeTypeFilter',\n value: function getEdgeTypeFilter(type) {\n var _this2 = this;\n\n var filter = $tw.wiki.getCacheForTiddler(this.edgeTypeFilterTRef, \"tmap-edgeTypeFilter\", function () {\n\n var allETy = $tm.indeces.allETy;\n var src = Object.keys(allETy);\n var tObj = $tw.wiki.getTiddler(_this2.edgeTypeFilterTRef);\n\n var filter = {};\n filter.raw = tObj && tObj.fields.filter || '';\n filter.pretty = _utils2.default.getPrettyFilter(filter.raw);\n filter.matches = _utils2.default.getEdgeTypeMatches(filter.raw, allETy);\n filter.whitelist = _utils2.default.getLookupTable(filter.matches);\n\n return filter;\n });\n\n return type ? filter[type] : filter;\n }\n\n /**\n * Whether or not this EdgeType is visible in this view.\n *\n * @param {EdgeType|string} id\n * @return {*}\n */\n\n }, {\n key: 'isEdgeTypeVisible',\n value: function isEdgeTypeVisible(id) {\n\n return _utils2.default.isEdgeTypeMatch(_EdgeType2.default.getInstance(id).id, this.getEdgeTypeFilter(\"raw\"));\n }\n\n /**\n * Method will return a tiddlywiki node filter that is used to\n * decide which nodes are displayed by the graph.\n *\n * @param {(\"raw\"|\"pretty\"|\"compiled\")} [type] - Use this param to control the output type.\n * @result {*}\n * Depends on the type param:\n * - raw: the original filter string\n * - pretty: the prettyfied filter string for usage in textareas\n * - compiled: {Array<string>} all matches\n */\n\n }, {\n key: 'getNodeFilter',\n value: function getNodeFilter(type) {\n var _this3 = this;\n\n var filter = $tw.wiki.getCacheForTiddler(this.nodeFilterTRef, \"tmap-nodeFilter\", function () {\n\n var filter = _utils2.default.makeHashMap();\n var tObj = $tw.wiki.getTiddler(_this3.nodeFilterTRef);\n\n filter.raw = tObj && tObj.fields.filter || '';\n filter.pretty = _utils2.default.getPrettyFilter(filter.raw);\n filter.compiled = $tw.wiki.compileFilter(filter.raw);\n\n return filter;\n });\n\n return type ? filter[type] : filter;\n }\n\n /**\n * This method will return the node data stored in the view.\n *\n * @todo When to delete obsolete data?\n *\n * @param {string} nodeId\n * @result {Hashmap<Id, Object>} A Hashmap with node data.\n */\n\n }, {\n key: 'getNodeData',\n value: function getNodeData(nodeId) {\n var _this4 = this;\n\n var data = $tw.wiki.getCacheForTiddler(this.mapTRef, \"tmap-map\", function () {\n return _utils2.default.parseFieldData(_this4.mapTRef, 'text', {});\n });\n\n return nodeId ? data[nodeId] : data;\n }\n\n /**\n * A view equals another view either\n *\n * 1) if the js objects reference the same objects in the js runtime\n * 2) or if the views have the same root and both views exist\n *\n * @param view\n * @return {boolean}\n */\n\n }, {\n key: 'equals',\n value: function equals(view) {\n\n return view === this || ViewAbstraction.exists(view) && new ViewAbstraction(view).getRoot() === this.getRoot();\n }\n\n /**\n * This function will merge the given data in the view's node store.\n *\n * If a property is set to null, it will be removed.\n *\n * If two arguments are provided, the first parameter is assumed\n * to be a node id and the second to be the data object. The data\n * will extend the existing data. If data is not an object, it is\n * assumed to be a delete directive and consequently the node data\n * in the store will be deleted.\n *\n * Otherwise, if a single object parameter is provided, it is regarded\n * as a node collection and the whole object is used to extend the store.\n *\n * Note: The Adapter will routinely delete node content of nodes that are\n * not contained in the view anymore.\n */\n\n }, {\n key: 'saveNodeData',\n value: function saveNodeData() {\n\n var data = this.getNodeData();\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (args.length === 2) {\n\n if (_typeof(args[1]) === 'object') {\n\n if (args[1] === null) {\n\n delete data[args[0]];\n } else {\n\n data[args[0]] = Object.assign(data[args[0]] || {}, args[1]);\n }\n }\n } else if (args.length === 1 && _typeof(args[0]) === 'object') {\n\n $tm.logger('log', 'Storing data in', this.mapTRef);\n\n Object.assign(data, args[0]);\n } else {\n // not allowed\n\n throw new (Function.prototype.bind.apply(_exception.InvalidArgumentException, [null].concat(args)))();\n }\n\n _utils2.default.writeFieldData(this.mapTRef, 'text', data, $tm.config.sys.jsonIndentation);\n }\n\n /**\n * Saves a node's position to the store\n *\n * @param {Node} node\n */\n\n }, {\n key: 'saveNodePosition',\n value: function saveNodePosition(node) {\n\n if (node.id && node.x != null && node.y != null) {\n // only pass coordinates to prevent other data from being stored!\n this.saveNodeData(node.id, { x: node.x, y: node.y });\n }\n }\n\n /**\n * Saves a node's position to the store\n *\n * @param {Object} positions\n */\n\n }, {\n key: 'saveNodePositions',\n value: function saveNodePositions(positions) {\n\n var nodeData = this.getNodeData();\n\n for (var id in positions) {\n\n nodeData[id] = nodeData[id] || {};\n nodeData[id].x = positions[id].x;\n nodeData[id].y = positions[id].y;\n }\n\n this.saveNodeData(nodeData);\n }\n\n /**\n * Marks the node with the given id as central topic.\n *\n * @param nodeId\n */\n\n }, {\n key: 'setCentralTopic',\n value: function setCentralTopic(nodeId) {\n\n this.setConfig('central-topic', nodeId);\n }\n\n /**\n * Saves the provided style for the node with the specified id in the view's store.\n *\n * Note: The coordinates of the node on the map are not stored via this function.\n * For this task, use saveNodePosition() instead.\n *\n * @param {string} nodeId\n * @param {Object} style\n */\n\n }, {\n key: 'saveNodeStyle',\n value: function saveNodeStyle(nodeId, style) {\n\n // remove any previos style from store;\n // @TODO: optimize this only null in style var needs to be removed\n var data = this.getNodeData(nodeId) || {};\n\n var pos = { x: data.x, y: data.y };\n\n // tabula rasa! delete all previous properties\n for (var p in data) {\n delete data[p];\n }\n\n // save new style\n this.saveNodeData(nodeId, _extends({}, style, pos));\n }\n\n /**\n * The view's configTiddlerRef is stored in different tiddlers (paths).\n * This function registers these paths to this the view instance.\n *\n * @private\n * @params {ViewAbstraction|string} view\n */\n\n }, {\n key: '_registerPaths',\n value: function _registerPaths(view, isCreate) {\n\n // main config is stored here\n this.configTRef = ViewAbstraction._getRootPath(view);\n\n // store for node properties (positions and local node styles)\n this.mapTRef = this.configTRef + '/map';\n\n // filter stores\n this.nodeFilterTRef = this.configTRef + '/filter/nodes';\n this.edgeTypeFilterTRef = this.configTRef + '/filter/edges';\n\n this.snapshotTRef = this.getRoot() + '/snapshot';\n }\n\n /**\n * This will clear all cached tiddlers related to this view.\n *\n * @private\n * @return {boolean} true if the cache was dirty, false if cache was up-to-date and did\n */\n\n }, {\n key: '_clearCaches',\n value: function _clearCaches() {\n // clear all tiddler-caches below this path\n _utils2.default.getMatches('[prefix[' + this.getRoot() + ']]').forEach(function (tRef) {\n $tw.wiki.clearCache(tRef);\n });\n }\n\n /**\n * Will create the config tiddler which means that the view will\n * start to exist.\n *\n * @private\n */\n\n }, {\n key: '_createView',\n value: function _createView() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n isForce = _ref.isForce,\n protoView = _ref.protoView,\n isHidden = _ref.isHidden;\n\n // destroy any former view that existed in this path\n if (ViewAbstraction.exists(this)) {\n\n if (!isForce) {\n\n return;\n }\n\n this.destroy();\n }\n\n if (ViewAbstraction.exists(protoView)) {\n _utils2.default.cp(new ViewAbstraction(protoView).getRoot(), this.configTRef, true);\n }\n\n // create new view\n var fields = {\n title: this.configTRef,\n id: _utils2.default.genUUID() // maybe useful for future purposes…\n };\n\n if (!isHidden) {\n fields[$tm.field.viewMarker] = true;\n }\n\n $tw.wiki.addTiddler(new $tw.Tiddler(_utils2.default.getTiddler(this.configTRef), // in case we cloned the view\n fields));\n\n this.setEdgeTypeFilter(env.filter.defaultEdgeTypeFilter);\n }\n\n /**\n * Will return a filter part that matches the node's id.\n *\n * E.g. [field:tmap.id[1748576e-74bb-4165-85bb-0d312e3e4f1f]]\n *\n * @private\n *\n * @param node\n * @return {string}\n */\n\n }], [{\n key: '_getNodeIdFilterPart',\n value: function _getNodeIdFilterPart(node) {\n\n var id = (typeof node === 'undefined' ? 'undefined' : _typeof(node)) === 'object' ? node.id : node;\n\n return '[field:tmap.id[' + id + ']]';\n }\n\n /**\n * Will return the path to the config tiddler of this view, aka the view's root.\n *\n * @private\n *\n * @param {*} view - The constructor param to abstract or create the view.\n * @result {string|undefined} The view config path.\n */\n\n }, {\n key: '_getRootPath',\n value: function _getRootPath(view) {\n\n if (view instanceof ViewAbstraction) {\n\n return view.configTRef;\n }\n\n if (view instanceof $tw.Tiddler) {\n // is a tiddler object\n\n view = view.fields.title;\n }\n\n if (typeof view === 'string') {\n\n // remove prefix and slash\n var label = _utils2.default.getWithoutPrefix(view, $tm.path.views + '/');\n\n // a valid label must not contain any slashes\n if (label && !_utils2.default.hasSubString(label, '/')) {\n\n return $tm.path.views + '/' + label;\n }\n }\n }\n\n /**\n * A view exists if the the view's root exists as tiddler in the store.\n *\n * @return {ViewAbstraction|string}\n */\n\n }, {\n key: 'exists',\n value: function exists(view) {\n\n if (!view) {\n\n return false;\n }\n\n if (view instanceof ViewAbstraction) {\n\n view = view.configTRef;\n } else {\n\n view = ViewAbstraction._getRootPath(view);\n }\n\n return _utils2.default.tiddlerExists(view);\n }\n }]);\n\n return ViewAbstraction;\n}();\n\n/*** Exports *******************************************************/\n\nexports.default = ViewAbstraction;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/ViewAbstraction.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/Popup": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/Popup",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**** Code *********************************************************/\n\n/**\n * Installs a hidden popup below `parentDomNode` that may be shown\n * and or hidden.\n *\n * @constructor\n *\n * @param {Element} [parentDomNode] - The popup container. The\n * popup will create itself in this container.\n * @param {Hashmap} [options] - An options object.\n * @param {string} [options.className] - A classname to be added to\n * the popup div.\n * @param {int} [options.delay] - The default delay for the popup\n * show and hide.\n */\nfunction Popup(parentDomNode, options) {\n\n options = options || {};\n\n this._parentDomNode = parentDomNode;\n this._domNode = document.createElement('div');\n this._domNode.style.display = 'none';\n this._domNode.className = 'tmap-popup';\n\n this._parentDomNode.appendChild(this._domNode);\n $tw.utils.addClass(this._domNode, options.className);\n\n this._isEnabled = true;\n this._isPreventShowOrHide = false;\n this._isHideOnClick = !!options.hideOnClick;\n this._timeoutShow = null;\n this._timeoutHide = null;\n this._isDisplayNoneAfterAnimation = true;\n\n // delays\n var val = parseInt(options.leavingDelay);\n this._hideDelayLeavingPopup = _utils2.default.isInteger(val) ? val : 200;\n\n val = parseInt(options.hideDelay);\n this._hideDelay = _utils2.default.isInteger(val) ? val : 200;\n\n val = parseInt(options.showDelay);\n this._showDelay = _utils2.default.isInteger(val) ? val : 200;\n\n // force early binding of functions to this context\n _utils2.default.bindTo(this, ['_show', '_hide', '_handleEnter', '_handleLeave', '_handleAnimationEnd', '_handleClick']);\n\n // specify handlers\n this._listeners = {\n 'mouseenter': this._handleEnter,\n 'mouseleave': this._handleLeave,\n 'click': [this._handleClick, true]\n };\n\n var fn = this._handleAnimationEnd;\n this._listeners[$tw.utils.convertEventName('animationEnd')] = fn;\n this._listeners[$tw.utils.convertEventName('transitionEnd')] = fn;\n\n // add handlers\n _utils2.default.setDomListeners('add', this._domNode, this._listeners, false);\n}\n\n/**\n * When the mouse is inside the popup, the popup will manage closing\n * itself and ignore all closing attempts from outside.\n */\n// @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/Popup\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nPopup.prototype._handleEnter = function (ev) {\n\n //~ console.log(\"_handleEnter\");\n\n this._isPreventShowOrHide = true;\n};\n\n/**\n * Handler triggered when leaving the popup div.\n */\nPopup.prototype._handleLeave = function (ev) {\n\n //~ console.log(\"_handleLeave\");\n\n this._isPreventShowOrHide = false;\n\n // we need some delay because resizing may cause the mouse to\n // exit the popup for some miliseconds\n\n this.hide(this._hideDelayLeavingPopup);\n};\n\nPopup.prototype._handleClick = function (ev) {\n\n //~ console.log(\"_handleLeave\");\n\n if (this._isHideOnClick) {\n this._hide(true);\n }\n};\n\n/**\n * Handler triggered when leaving the popup div.\n */\nPopup.prototype._handleAnimationEnd = function () {\n\n if (this._isDisplayNoneAfterAnimation) {\n //~ console.log(\"display: none\");\n this._domNode.style.display = 'none';\n }\n};\n\n/**\n * Immediately hides the popup.\n */\nPopup.prototype._hide = function (isForce) {\n\n //~ console.log(\"_hide\");\n\n if (!isForce && this._isPreventShowOrHide) return;\n\n //~ console.log(\"_hide SUCCESS\");\n\n this._isDisplayNoneAfterAnimation = true;\n this._isPreventShowOrHide = false;\n\n $tw.utils.removeClass(this._domNode, 'tmap-popup-active');\n};\n\n/**\n * Makes the text visible as popup and registers it with the\n * given signature.\n *\n * The popup is spawned on the side that has the most space.\n *\n * @param {*} signature - The signature that has been\n * passed to {@link show}.\n */\nPopup.prototype._show = function (signature, text) {\n\n //~ console.log(\"_show\");\n\n if (this._isPreventShowOrHide || $tm.mouse.ctrlKey || !this._isEnabled) {\n return;\n }\n\n this._domNode.style.display = 'none';\n $tw.utils.removeClass(this._domNode, 'tmap-popup-active');\n\n // remove any positioning or modification done before\n this._domNode.removeAttribute('style');\n\n // remove any previous content\n _utils2.default.removeDOMChildNodes(this._domNode);\n var div = this._domNode.appendChild(document.createElement('div'));\n\n if (typeof text === 'function') {\n text(signature, div);\n } else {\n div.innerHTML = text;\n }\n\n if (!div.childNodes.length) return;\n\n var parRect = this._parentDomNode.getBoundingClientRect();\n var x = $tm.mouse.clientX;\n var y = $tm.mouse.clientY;\n\n //~ console.log(\"_show SUCCESS\");\n\n // ATTENTION: display needs to be true before we can get the bounds!\n\n // make sure that display is block so the animation is executed\n // and we can retrieve the size of the div.\n this._domNode.style.display = 'block';\n\n var popRect = this._domNode.getBoundingClientRect();\n\n var availSpaceRight = parRect.right - (x + popRect.width);\n var availSpaceLeft = x - popRect.width - parRect.left;\n var spawnRight = availSpaceRight > availSpaceLeft;\n\n var availSpaceBottom = parRect.bottom - (y + popRect.height);\n var availSpaceTop = y - popRect.height - parRect.top;\n var spawnBottom = availSpaceBottom > availSpaceTop;\n\n var shiftLeft = spawnRight ? -15 : popRect.width + 15;\n var shiftTop = spawnBottom ? -15 : popRect.height + 15;\n\n this._domNode.style.left = x - parRect.left - shiftLeft + 'px';\n this._domNode.style.top = y - parRect.top - shiftTop + 'px';\n\n // …and make sure that it stays block after the animation is done…\n this._isDisplayNoneAfterAnimation = false;\n // …and add the class that triggers the animation…\n $tw.utils.addClass(this._domNode, 'tmap-popup-active');\n};\n\n/**\n * Makes the text visible as popup after a given delay and\n * registers the popup under the specified signature.\n *\n * @param {*} signature - If {@param text} is provided as param and\n * is a function, then this will be passed later as argument to\n * text. It therefore acts as means to identify the popup later\n * on or pass data that survives the delay.\n * @param {string|Function} text - If text\n * is a string, it will be shown in the popup, otherwise,\n * if text is a function, it will be executed and it is\n * expected to populate the popup div passed as second parameter;\n * the first parameter will be the signature object.\n * @param{delay} delay - Delays the hide operation.\n */\nPopup.prototype.show = function (signature, text, delay) {\n\n //~ console.log(\"show\", delay);\n\n this._clearTimeouts();\n\n delay = _utils2.default.isInteger(delay) ? delay : this._showDelay;\n\n // start a new timeout\n this._timeoutShow = setTimeout(this._show, delay, signature, text);\n};\n\n/**\n * Hide the popup.\n *\n * @param {int} delay - Delays the hide operation.\n */\nPopup.prototype.hide = function (delay, isForce) {\n\n //~ console.log(\"hide\", delay);\n\n this._clearTimeouts();\n\n delay = _utils2.default.isInteger(delay) ? delay : this._hideDelay;\n\n if (isForce || delay === 0) {\n // @TODO is this really correct?\n this._hide(isForce);\n } else {\n this._timeoutHide = setTimeout(this._hide, delay, isForce);\n }\n};\n\n/**\n * Completely enable or disable the popup\n */\nPopup.prototype.setEnabled = function (isEnabled) {\n this._isEnabled = isEnabled;\n};\n\nPopup.prototype.isShown = function () {\n return this._domNode.style.display === 'block';\n};\n\nPopup.prototype._clearTimeouts = function () {\n\n clearTimeout(this._timeoutShow);\n clearTimeout(this._timeoutHide);\n\n this._timeoutShow = undefined;\n this._timeoutHide = undefined;\n};\n\n/*** Exports *******************************************************/\n\nexports.default = Popup;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/Popup.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/SelectionRectangle": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/SelectionRectangle",
"text": "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/SelectionRectangle\ntype: application/SelectionRectangle\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/**** Code *********************************************************/\n\n/**\n * Represents a rectangle spanned by mouse selection\n *\n * @constructor\n *\n * @param {Element} [parentDomNode] - The popup container. The\n * popup will create itself in this container.\n * @param {Hashmap} [options] - An options object.\n * @param {string} [options.className] - A classname to be added to\n * the popup div.\n * @param {int} [options.delay] - The default delay for the popup\n * show and hide.\n */\nvar SelectionRectangle = function () {\n\n /**\n * Sets up the selection with the specified initial offset.\n *\n * @param {number} x - offset x\n * @param {number} y - offset y\n */\n function SelectionRectangle(x, y) {\n _classCallCheck(this, SelectionRectangle);\n\n this.x1 = x;\n this.x2 = x;\n\n this.y1 = y;\n this.y2 = y;\n }\n\n /**\n * Spans the selection.\n *\n * @param {number} x - x coordinate\n * @param {number} y - y coordinate\n */\n\n\n _createClass(SelectionRectangle, [{\n key: \"span\",\n value: function span(x, y) {\n\n this.x2 = x;\n this.y2 = y;\n }\n\n /**\n * @return {number} width\n */\n\n }, {\n key: \"getWidth\",\n value: function getWidth() {\n\n return this.x2 - this.x1;\n }\n\n /**\n * @return {number} height\n */\n\n }, {\n key: \"getHeight\",\n value: function getHeight() {\n\n return this.y2 - this.y1;\n }\n\n /**\n * @return {array} an array holding the following data in sequence: x, y, width, height\n */\n\n }, {\n key: \"getRect\",\n value: function getRect() {\n\n return [this.x1, this.y1, this.getWidth(), this.getHeight()];\n }\n\n /**\n * @param {number} x - x coordinate\n * @param {number} y - y coordinate\n * @return {boolean}\n */\n\n }, {\n key: \"isPointWithin\",\n value: function isPointWithin(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var x1 = this.x1,\n x2 = this.x2,\n y1 = this.y1,\n y2 = this.y2;\n\n\n var mostLeft = Math.min(x1, x2);\n var mostRight = Math.max(x1, x2);\n var mostBottom = Math.min(y1, y2);\n var mostTop = Math.max(y1, y2);\n\n return mostLeft < x && x < mostRight && mostBottom < y && y < mostTop;\n }\n }]);\n\n return SelectionRectangle;\n}();\n\n/*** Exports *******************************************************/\n\nexports.default = SelectionRectangle;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/SelectionRectangle.js.map\n",
"type": "application/SelectionRectangle",
"module-type": "library"
},
"/home/felo/projects/Tiddlywiki/TiddlyWiki5/plugins/felixhayashi/tiddlymap/js/lib/TypeDefs.js": {
"title": "/home/felo/projects/Tiddlywiki/TiddlyWiki5/plugins/felixhayashi/tiddlymap/js/lib/TypeDefs.js",
"text": "/**\n * @typedef {string} TiddlerReference\n *\n * A reference (title) that identifies a tiddler.\n */\n\n/**\n * @typedef {$tw.Tiddler|TiddlerReference} Tiddler\n *\n * Either a reference (title) that identifies the tiddler or an object\n * representation.\n */\n\n/**\n * @typedef {string|number} Id\n *\n * An id used to identify a node or tiddler. Ids may only contain characters\n * that are valid when used as tiddlywiki field values.\n */\n\n/**\n * @typedef {Object} Edge\n *\n * @property {Id} id - The id of the edge.\n * @property {Id} from - An id that refers to a {@link Node} and denotes the\n * from part of an edge.\n * @property {Id} to - An id that refers to a {@link Node} and denotes the\n * to part of an edge.\n * @property {string} label - The label of the edge that will be displayed\n * in the rendered graph.\n * @property {string} [view] - An optional viewname to which the edge is\n * bound to.\n *\n * An edge connects nodes in a vis.Network.\n */\n\n/**\n * @typedef {Object} EdgeTypeSubscriberInfo\n *\n * @property {(\"_\"|undefined)} [marker] - The marker of the edge type.\n * @property {string} [namespace] - The namespace of the edge type.\n * @property {string} [name] - The name of the edge type.\n * @property {boolean} [include=true] - Whether or not this subscriber should be registered.\n */\n\n/**\n * @typedef {Object} Node\n *\n * This object is used by the vis.Network.\n *\n * @property {Id} id - The id of the node.\n * @property {string} label - The label of the node that will be displayed\n * in the rendered graph.\n */\n\n/**\n * @typedef {Object} Hashmap\n *\n * Sometimes it makes semantically more sense to call an object a hashmap.\n * Then it becomes clear that we are talking about a simple key-value store.\n */\n\n/**\n * @typedef {Array.<*>|Hashmap.<Id, *>|vis.DataSet} Collection\n *\n * A collection contains a group of elements, usually nodes\n * (see {@link NodeCollection}) or edges (see {@link EdgeCollection}).\n *\n * A collection object corresponds to a {@link CollectionTypeString}.\n */\n\n/**\n * @typedef {Array.<Edge>|Hashmap.<Id, Edge>|vis.DataSet} EdgeCollection\n *\n * A collection of edges.\n */\n\n/**\n * @typedef {Array.<Node>|Hashmap.<Id, Node>|vis.DataSet} NodeCollection\n *\n * A collection of nodes.\n */\n\n/**\n * @typedef {Array.<Tiddler>|Hashmap.<Id, Tiddler>} TiddlerCollection\n *\n * A collection of tiddlers.\n */\n\n/**\n * @typedef {string|function} TiddlyWikiFilter\n *\n * A tiddlywiki filter expression or a compiled filter.\n */\n\n/**\n * @typedef {Tiddler|string|ViewAbstraction} View\n *\n * A view is identified either by a tiddler reference (title),\n * a Tiddler instance or a label. Moreover, a ViewAbstraction\n * may be used as view representation.\n */\n\n/**\n * @typedef {array|hashmap|dataset} CollectionTypeString\n *\n * Most of tiddlymap's select statements allow the user to choose one\n * of the specified output types, depending on what is most suitable.\n *\n * The output types relate to the different types of\n * {@link EdgeCollection} and {@link NodeCollection}.\n */\n\n/**\n * @typedef {Object} Position\n *\n * An object containing x, y properties.\n *\n * @property {number} x - The x coordinate.\n * @property {number} y - The y coordinate.\n */\n\n/**\n * @typedef {Object} Updates\n *\n * An object that carries information about wiki changes after a refresh cycle occurred.\n * This is a more advanced form of the changedTiddlers object.\n *\n * @property {Object<TiddlerReference, string>} changedTiddlers\n * a TiddlyWiki changedTiddlers list that has all draft tiddler changes removed\n * @property {Object<string, boolean>} paths\n * a list of root paths in which tiddler changes occured.\n */\n\n/**\n * @typedef {string} EdgeTypeId\n *\n * An edge-type id string consists of the following parts of which the\n * first two are optional: `[marker][namespace:]name`\n *\n * Note: The colon is not considered to be part of the namespace but is required\n * if a namespace exists.\n */\n\"use strict\";\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/TypeDefs.js.map\n"
},
"$:/plugins/felixhayashi/tiddlymap/js/config/vis": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/config/vis",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/config/vis\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\nvar visConfig = {\n\n locale: 'en_EN',\n clickToUse: false,\n autoResize: false,\n height: '100%',\n width: '100%',\n configure: {\n enabled: false\n },\n interaction: {\n dragNodes: true,\n dragView: true,\n hideEdgesOnDrag: false,\n hideNodesOnDrag: false,\n hover: true,\n navigationButtons: true,\n multiselect: true,\n selectable: true,\n selectConnectedEdges: true,\n tooltipDelay: 600,\n zoomView: false,\n keyboard: {\n enabled: false,\n speed: {\n x: 10,\n y: 10,\n zoom: 0.02\n },\n bindToWindow: false\n }\n },\n manipulation: {\n initiallyActive: true\n },\n nodes: {\n shape: 'box',\n shadow: {\n enabled: false\n },\n color: {\n border: '#2B7CE9',\n background: '#97C2FC'\n }\n },\n edges: {\n smooth: {\n enabled: true\n },\n color: {\n color: '#848484',\n inherit: false\n },\n arrows: {\n to: {\n enabled: true\n }\n }\n },\n physics: {\n forceAtlas2Based: {\n // <- more repulsion between nodes - 0 - more attraction between nodes ->\n gravitationalConstant: -300, // default: -50\n // edge length\n springLength: 0, // default: 100\n // <- less stiff edges - 0 - stiffer edges ->\n springConstant: 0.2, // default: 0.08\n // pulls the entire network back to the center.\n centralGravity: 0.015, // default: 0.01\n // kinetic energy reduction\n damping: 0.4\n },\n solver: 'forceAtlas2Based',\n stabilization: {\n enabled: true,\n iterations: 1000,\n updateInterval: 10,\n onlyDynamicEdges: false,\n fit: false\n }\n }\n};\n\nexports.default = visConfig;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/VisConfig.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/environment": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/environment",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n// @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/environment\ntype: application/javascript\n module-type: library\n\n@preserve\n\n\\*/\n\n/*** Code **********************************************************/\n\n/**\n * This module is responsible for registering a global namespace\n * under $tw and registering fundamental path variables.\n *\n * Everything that doesn't change when the global config object is\n * updated. This includes prefixes (paths) and tiddler titles.\n *\n * ATTENTION: The paths are deliberately written in full so they\n * are discovered when a search is performed over the TiddlyMap code.\n */\n\n// **ATTENTION: NO TRAILING SLASHES IN PATHS EVER**\nvar path = exports.path = {\n pluginRoot: '$:/plugins/felixhayashi/tiddlymap',\n edgeTypes: '$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes',\n nodeTypes: '$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes',\n views: '$:/plugins/felixhayashi/tiddlymap/graph/views',\n options: '$:/plugins/felixhayashi/tiddlymap/config',\n dialogs: '$:/plugins/felixhayashi/tiddlymap/dialog',\n footers: '$:/plugins/felixhayashi/tiddlymap/dialogFooter',\n tempRoot: '$:/temp/tmap',\n tempStates: '$:/temp/tmap/state',\n tempPopups: '$:/temp/tmap/state/popup',\n localHolders: '$:/temp/tmap/holders'\n};\n\n// static references to important tiddlers\nvar ref = exports.ref = {\n defaultViewHolder: '$:/plugins/felixhayashi/tiddlymap/misc/defaultViewHolder',\n graphBar: '$:/plugins/felixhayashi/tiddlymap/misc/advancedEditorBar',\n sysUserConf: '$:/plugins/felixhayashi/tiddlymap/config/sys/user',\n visUserConf: '$:/plugins/felixhayashi/tiddlymap/config/vis/user',\n welcomeFlag: '$:/plugins/felixhayashi/tiddlymap/flag/welcome',\n focusButton: '$:/plugins/felixhayashi/tiddlymap/misc/focusButton',\n sysMeta: '$:/plugins/felixhayashi/tiddlymap/misc/meta',\n liveTab: '$:/plugins/felixhayashi/tiddlymap/hook/liveTab',\n mainEditor: '$:/plugins/felixhayashi/tiddlymap/hook/editor',\n sidebarBreakpoint: '$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint'\n};\n\n// some other options\nvar misc = exports.misc = {\n // if no edge label is specified, this is used as label\n unknownEdgeLabel: 'tmap:undefined',\n liveViewLabel: 'Live View',\n defaultViewLabel: 'Default',\n mainEditorId: 'main_editor',\n arrows: { 'in': '⇦', 'out': '➡', 'bi': '⇄' }\n};\n\nvar config = exports.config = {\n sys: {\n field: {\n nodeLabel: 'caption',\n nodeIcon: 'icon',\n nodeInfo: 'description',\n viewMarker: 'isview'\n },\n liveTab: {\n fallbackView: misc.liveViewLabel\n },\n suppressedDialogs: {},\n edgeClickBehaviour: 'manager',\n debug: 'false',\n notifications: 'true',\n popups: {\n enabled: 'true',\n delay: '600',\n width: '240px',\n height: '140px'\n },\n jsonIndentation: '1',\n alwaysAddNodeIdToViewFilter: 'true',\n editNodeOnCreate: 'false',\n singleClickMode: 'false',\n nodeFilterNeighbours: 'false',\n editorMenuBar: {\n showNeighScopeButton: 'true',\n showRasterMenuButton: 'true',\n showScreenshotButton: 'true'\n }\n }\n};\n\n// some popular filters\nvar filter = exports.filter = {\n nodeTypes: '[prefix[' + path.nodeTypes + ']]',\n edgeTypes: '[prefix[' + path.edgeTypes + ']]',\n views: '[' + config.sys.field.viewMarker + '[true]]',\n defaultEdgeTypeFilter: '-[prefix[_]] -[[tw-body:link]] -[[tw-list:tags]] -[[tw-list:list]]'\n};\n\nvar allSelector = '[all[tiddlers+shadows]!has[draft.of]]';\n\n// some popular selectors\n// usually used from within tiddlers via the tmap macro\n\nvar s = {\n allEdgeTypes: allSelector + ' +' + filter.edgeTypes,\n allNodeTypes: allSelector + ' +' + filter.nodeTypes,\n allViews: allSelector + ' +' + filter.views,\n allPotentialNodes: '[all[tiddlers]!is[system]!has[draft.of]]'\n};\n\nvar selector = exports.selector = _extends({}, s, {\n allEdgeTypesById: s.allEdgeTypes + ' +[removeprefix[' + path.edgeTypes + '/]]',\n allNodeTypesById: s.allNodeTypes + ' +[removeprefix[' + path.nodeTypes + '/]]',\n allViewsByLabel: s.allViews + ' +[removeprefix[' + path.views + '/]]'\n});\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/environment.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/exception": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/exception",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/exception\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/**\n * Base class for all Exceptions in TiddlyMap\n */\nvar TiddlyMapError = function (_Error) {\n _inherits(TiddlyMapError, _Error);\n\n /**\n *\n * @param {string} message\n * @param {array} payload\n */\n function TiddlyMapError(message, payload) {\n _classCallCheck(this, TiddlyMapError);\n\n var _this = _possibleConstructorReturn(this, (TiddlyMapError.__proto__ || Object.getPrototypeOf(TiddlyMapError)).call(this, message));\n\n _this.payload = payload;\n return _this;\n }\n\n _createClass(TiddlyMapError, [{\n key: 'getPayload',\n value: function getPayload() {\n return this.payload;\n }\n }]);\n\n return TiddlyMapError;\n}(Error);\n\n/**\n * Thrown if a css or dom structure is not present but was expected by TiddlyMap.\n */\n\n\nvar EnvironmentError = exports.EnvironmentError = function (_TiddlyMapError) {\n _inherits(EnvironmentError, _TiddlyMapError);\n\n function EnvironmentError(aspect) {\n _classCallCheck(this, EnvironmentError);\n\n return _possibleConstructorReturn(this, (EnvironmentError.__proto__ || Object.getPrototypeOf(EnvironmentError)).call(this, 'Critical parts of the underlying system changed: ' + aspect));\n }\n\n return EnvironmentError;\n}(TiddlyMapError);\n\n/**\n * Thrown if a plugin or any other kind of required dependency is missing.\n */\n\n\nvar DependencyError = exports.DependencyError = function (_TiddlyMapError2) {\n _inherits(DependencyError, _TiddlyMapError2);\n\n function DependencyError(dep) {\n _classCallCheck(this, DependencyError);\n\n return _possibleConstructorReturn(this, (DependencyError.__proto__ || Object.getPrototypeOf(DependencyError)).call(this, 'TiddlyMap cannot run without: : ' + dep));\n }\n\n return DependencyError;\n}(TiddlyMapError);\n\n/**\n * Thrown if an interface method is not fully implemented.\n */\n\n\nvar MissingOverrideError = exports.MissingOverrideError = function (_TiddlyMapError3) {\n _inherits(MissingOverrideError, _TiddlyMapError3);\n\n function MissingOverrideError(context, methodName) {\n _classCallCheck(this, MissingOverrideError);\n\n return _possibleConstructorReturn(this, (MissingOverrideError.__proto__ || Object.getPrototypeOf(MissingOverrideError)).call(this, context.constructor.name + ' does not override method \"' + methodName + '\"'));\n }\n\n return MissingOverrideError;\n}(TiddlyMapError);\n\n/**\n * Thrown if a resource such as a node, edge, view, tiddler etc. cannot be located\n * in the system.\n */\n\n\nvar ResourceNotFoundException = exports.ResourceNotFoundException = function (_TiddlyMapError4) {\n _inherits(ResourceNotFoundException, _TiddlyMapError4);\n\n /**\n * @param {string} resourceType\n * @param {*} payload\n */\n function ResourceNotFoundException(resourceType) {\n _classCallCheck(this, ResourceNotFoundException);\n\n for (var _len = arguments.length, payload = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n payload[_key - 1] = arguments[_key];\n }\n\n return _possibleConstructorReturn(this, (ResourceNotFoundException.__proto__ || Object.getPrototypeOf(ResourceNotFoundException)).call(this, 'Cannot resolve ' + resourceType, payload));\n }\n\n return ResourceNotFoundException;\n}(TiddlyMapError);\n\n/**\n * Thrown if a resource such as a node, edge, view, tiddler etc. cannot be located\n * in the system.\n */\n\n\nvar InvalidArgumentException = exports.InvalidArgumentException = function (_TiddlyMapError5) {\n _inherits(InvalidArgumentException, _TiddlyMapError5);\n\n function InvalidArgumentException() {\n _classCallCheck(this, InvalidArgumentException);\n\n for (var _len2 = arguments.length, payload = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n payload[_key2] = arguments[_key2];\n }\n\n return _possibleConstructorReturn(this, (InvalidArgumentException.__proto__ || Object.getPrototypeOf(InvalidArgumentException)).call(this, 'Invalid or missing argument provided', payload));\n }\n\n return InvalidArgumentException;\n}(TiddlyMapError);\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/exceptions.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/URL": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/URL",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/URL\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Code **********************************************************/\n\n/**\n * <<<\n * Lightweight URL manipulation with JavaScript. This library is\n * independent of any other libraries and has pretty simple interface\n * and lightweight code-base. Some ideas of query string parsing\n * had been taken from Jan Wolter.\"\n *\n * @see http://unixpapa.com/js/querystring.html\n * @license MIT\n * @author Mykhailo Stadnyk <mikhus@gmail.com>\n * <<< https://github.com/Mikhus/jsurl\n *\n * @class\n * @param {string} url\n */\nfunction Url(url) {\n this.paths = function (paths) {\n var prefix = '',\n i = 0,\n s;\n\n if (paths && paths.length && paths + '' !== paths) {\n if (this.isAbsolute()) {\n prefix = '/';\n }\n\n for (s = paths.length; i < s; i++) {\n paths[i] = encode(paths[i]);\n }\n\n this.path = prefix + paths.join('/');\n }\n\n paths = (this.path.charAt(0) === '/' ? this.path.slice(1) : this.path).split('/');\n\n for (i = 0, s = paths.length; i < s; i++) {\n paths[i] = decode(paths[i]);\n }\n\n return paths;\n };\n\n this.encode = encode;\n this.decode = decode;\n\n this.isAbsolute = function () {\n return this.protocol || this.path.charAt(0) === '/';\n };\n\n this.toString = function () {\n return (this.protocol && this.protocol + '://') + (this.user && encode(this.user) + (this.pass && ':' + encode(this.pass)) + '@') + (this.host && this.host) + (this.port && ':' + this.port) + (this.path && this.path) + (this.query.toString() && '?' + this.query) + (this.hash && '#' + encode(this.hash));\n };\n\n parse(this, url);\n}\n\nvar\n// mapping between what we want and <a> element properties\nmap = {\n protocol: 'protocol',\n host: 'hostname',\n port: 'port',\n path: 'pathname',\n query: 'search',\n hash: 'hash'\n},\n defaultPorts = {\n 'ftp': 21,\n 'gopher': 70,\n 'http': 80,\n 'https': 443,\n 'ws': 80,\n 'wss': 443\n},\n parse = function parse(self, url) {\n var d = document,\n link = d.createElement('a'),\n url = url || d.location.href,\n auth = url.match(/\\/\\/(.*?)(?::(.*?))?@/) || [],\n i;\n\n link.href = url;\n\n for (i in map) {\n self[i] = link[map[i]] || '';\n }\n\n // fix-up some parts\n self.protocol = self.protocol.replace(/:$/, '');\n self.query = self.query.replace(/^\\?/, '');\n self.hash = decode(self.hash.replace(/^#/, ''));\n self.user = decode(auth[1] || '');\n self.pass = decode(auth[2] || '');\n self.port = defaultPorts[self.protocol] == self.port || self.port == 0 ? '' : self.port; // IE fix, Android browser fix\n\n if (!self.protocol && !/^([a-z]+:)?\\/\\//.test(url)) {\n // is IE and path is relative\n var base = new Url(d.location.href.match(/(.*\\/)/)[0]),\n basePath = base.path.split('/'),\n selfPath = self.path.split('/'),\n props = ['protocol', 'user', 'pass', 'host', 'port'],\n s = props.length;\n\n basePath.pop();\n\n for (i = 0; i < s; i++) {\n self[props[i]] = base[props[i]];\n }\n\n while (selfPath[0] == '..') {\n // skip all \"../\n basePath.pop();\n selfPath.shift();\n }\n\n self.path = (url.charAt(0) != '/' ? basePath.join('/') : '') + '/' + selfPath.join('/');\n } else {\n // fix absolute URL's path in IE\n self.path = self.path.replace(/^\\/?/, '/');\n }\n\n self.paths((self.path.charAt(0) == '/' ? self.path.slice(1) : self.path).split('/'));\n\n parseQs(self);\n},\n encode = function encode(s) {\n return encodeURIComponent(s).replace(/'/g, '%27');\n},\n decode = function decode(s) {\n s = s.replace(/\\+/g, ' ');\n\n s = s.replace(/%([ef][0-9a-f])%([89ab][0-9a-f])%([89ab][0-9a-f])/gi, function (code, hex1, hex2, hex3) {\n var n1 = parseInt(hex1, 16) - 0xE0,\n n2 = parseInt(hex2, 16) - 0x80;\n\n if (n1 == 0 && n2 < 32) {\n return code;\n }\n\n var n3 = parseInt(hex3, 16) - 0x80,\n n = (n1 << 12) + (n2 << 6) + n3;\n\n if (n > 0xFFFF) {\n return code;\n }\n\n return String.fromCharCode(n);\n });\n\n s = s.replace(/%([cd][0-9a-f])%([89ab][0-9a-f])/gi, function (code, hex1, hex2) {\n var n1 = parseInt(hex1, 16) - 0xC0;\n\n if (n1 < 2) {\n return code;\n }\n\n var n2 = parseInt(hex2, 16) - 0x80;\n\n return String.fromCharCode((n1 << 6) + n2);\n });\n\n s = s.replace(/%([0-7][0-9a-f])/gi, function (code, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n\n return s;\n},\n parseQs = function parseQs(self) {\n var qs = self.query;\n\n self.query = new function (qs) {\n var re = /([^=&]+)(=([^&]*))?/g,\n match;\n\n while (match = re.exec(qs)) {\n var key = decodeURIComponent(match[1].replace(/\\+/g, ' ')),\n value = match[3] ? decode(match[3]) : '';\n\n if (this[key] != null) {\n if (!(this[key] instanceof Array)) {\n this[key] = [this[key]];\n }\n\n this[key].push(value);\n } else {\n this[key] = value;\n }\n }\n\n this.clear = function () {\n for (var key in this) {\n\n if (!(this[key] instanceof Function)) {\n\n delete this[key];\n }\n }\n };\n\n this.count = function () {\n var count = 0,\n key;\n for (key in this) {\n\n if (!(this[key] instanceof Function)) {\n count++;\n }\n }\n return count;\n };\n\n this.isEmpty = function () {\n return this.count() === 0;\n };\n\n this.toString = function () {\n var s = '',\n e = encode,\n i,\n ii;\n\n for (i in this) {\n\n if (this[i] instanceof Function) {\n continue;\n }\n\n if (this[i] instanceof Array) {\n\n var len = this[i].length;\n\n if (len) {\n for (ii = 0; ii < len; ii++) {\n s += s ? '&' : '';\n\n s += e(i) + '=' + e(this[i][ii]);\n }\n } else {\n // parameter is an empty array, so treat as\n // an empty argument\n\n s += (s ? '&' : '') + e(i) + '=';\n }\n } else {\n s += s ? '&' : '';\n\n s += e(i) + '=' + e(this[i]);\n }\n }\n\n return s;\n };\n }(qs);\n};\n\n/*** Exports *******************************************************/\n\nexports.default = Url;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/url.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bindTo = exports.getNearestRasterPosition = exports.mod = exports.removeDOMChildNodes = exports.setDomListeners = exports.merge = exports.getRandomLabel = exports.getFirstElementByClassName = exports.getImgFromWeb = exports.pickRandom = exports.hasKeyWithPrefix = exports.getWithoutPrefix = exports.getPropertiesByPrefix = exports.removeArrayElement = exports.isTrue = exports.replaceAll = exports.isInteger = exports.findAndRemoveClassNames = exports.getAncestorWithClass = exports.makeHashMap = exports.getWithoutNewLines = exports.joinAndWrap = exports.parseJSON = exports.hasSubString = exports.inArray = exports.getRandomInt = exports.isEqual = exports.identity = exports.base64 = exports.startsWith = exports.getBasename = exports.escapeRegex = exports.hasElements = exports.ucFirst = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\nvar _exception = require('$:/plugins/felixhayashi/tiddlymap/js/exception');\n\n/**\n * Uppercase the first letter of a string.\n */\nvar ucFirst = exports.ucFirst = function ucFirst(string) {\n return string && string[0].toUpperCase() + string.slice(1);\n};\n\n/**\n * Function to find out whether an object has any enumerable properties\n * or, in case of an array, elements.\n *\n * @param {Object} obj\n * @return {boolean} True if at least one enumerable property exists,\n * false otherwise.\n */\nvar hasElements = exports.hasElements = function hasElements(obj) {\n return Object.keys(obj).length > 0;\n};\n\n/**\n * When we do not know the string, we need to escape it.\n * @deprecated use tw's escapeRegExp instead\n */\nvar escapeRegex = exports.escapeRegex = function escapeRegex(str) {\n return str.replace(/[-$^?.+*[\\]\\\\(){}|]/g, '\\\\$&');\n};\n\n/**\n * Returns the basename of a path.\n * A path is a string with slashes (or another separator).\n *\n * @param {string} path - The path\n * @param {string} [separator='/']\n * @return {string} The basename\n */\nvar getBasename = exports.getBasename = function getBasename(path) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '/';\n return path.substring(path.lastIndexOf(separator) + 1);\n};\n\n/**\n * Helper to increase the code semantics.\n *\n * @param {string} str - The string to work with.\n * @param {string} prefix - The sequence to test.\n * @result {boolean} True if `str` starts with `prefix`, false otherwise.\n */\nvar startsWith = exports.startsWith = function startsWith(str, prefix) {\n return str.substring(0, prefix.length) === prefix;\n};\n\n/**\n * Converts a string to base64 encoding.\n *\n * To do so, we either choose the native btoa browser function or the Buffer class\n * received via scope.\n *\n * @param {string} str\n */\nvar base64 = exports.base64 = typeof window === 'undefined' ? function (str) {\n return new Buffer(str).toString('base64');\n} : window.btoa.bind(window);\n\n/**\n * If two objects have the same properties, with the same values\n * then identity identity(obj) === identity(obj2) will return true.\n *\n * @param obj\n * @return string\n */\nvar identity = exports.identity = function identity(obj) {\n return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null ? JSON.stringify(Object.keys(obj).sort().map(function (key) {\n return [key, obj[key]];\n })) : null;\n};\n\n/**\n * Returns true if both objects have the same properties\n * @param obj1\n * @param obj2\n */\nvar isEqual = exports.isEqual = function isEqual(obj1, obj2) {\n return identity(obj1) === identity(obj2);\n};\n\n/**\n *\n * @param min\n * @param max\n */\nvar getRandomInt = exports.getRandomInt = function getRandomInt(min, max) {\n return Math.floor(Math.random() * (max - min) + min);\n};\n\n/**\n * Checks if a value exists in an array. A strict search is used\n * which means that also the type of the needle in the haystack\n * is checked.\n *\n * @param {*} needle - The searched value.\n * @param {Array} haystack - The array.\n * @return Returns true if needle is found in the array, false otherwise.\n */\nvar inArray = exports.inArray = function inArray(needle, haystack) {\n return haystack.indexOf(needle) !== -1;\n};\n\n/**\n * Checks if a string exists in a string.\n */\nvar hasSubString = exports.hasSubString = function hasSubString(str, sub) {\n return str.indexOf(sub) !== -1;\n};\n\n/**\n * Try to turn the string into a javascript object. If the\n * transformation fails, return the optionally provided `data` object.\n *\n * @param {string} str - The string to parse.\n * @param {*} data - The default value if the operation fails.\n * @return {*} Either the object resulting from the parsing operation\n * or `undefined` or `data` if the operation failed.\n */\nvar parseJSON = exports.parseJSON = function parseJSON(str, data) {\n\n try {\n\n return JSON.parse(str);\n } catch (Error) {\n\n return data;\n }\n};\n\n/**\n * Joins all elements of an array into a string where all elements\n * are wrapped between `left` and `right`.\n *\n * @param {Array} arr - The array to perform the join on.\n * @param {string} left - The wrapping string for the left side.\n * @param {string} right - The wrapping string for the right side.\n * @param {string} [separator] - The separator between a wrapped element\n * and the next one. Defaults to space.\n * @return {string} The wrapped string, e.g. `[[hello]] [[world]]`.\n */\nvar joinAndWrap = exports.joinAndWrap = function joinAndWrap(arr, left, right) {\n var separator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ' ';\n return left + arr.join(right + separator + left) + right;\n};\n\n/**\n * Remove any newline from a string\n */\nvar getWithoutNewLines = exports.getWithoutNewLines = function getWithoutNewLines(str) {\n return typeof str === 'string' ? str.replace(/[\\n\\r]/g, ' ') : str;\n};\n\n/**\n * Factory function to return a prototypeless object that is used as\n * map. It only has the property hasOwnProperty in order to to be\n * exchangeble with other framworks that depend on this method like\n * e.g. visjs.\n *\n * @param {Object} [initialValues] - an object whose own properties will be\n * used to initialize the map.\n */\nvar makeHashMap = exports.makeHashMap = function makeHashMap(initialValues) {\n\n var map = Object.create(null);\n Object.defineProperty(map, 'hasOwnProperty', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: Object.prototype.hasOwnProperty.bind(map)\n });\n\n if (initialValues) {\n for (var key in initialValues) {\n if (initialValues.hasOwnProperty(key)) {\n map[key] = initialValues[key];\n }\n }\n }\n\n return map;\n};\n\n/**\n * If an ancestor that possesses a specified class exists the the\n * element will be returned, otherwise undefined is returned.\n *\n * @param {Element} el\n * @param {string} className\n */\nvar getAncestorWithClass = exports.getAncestorWithClass = function getAncestorWithClass(el, className) {\n\n if ((typeof el === 'undefined' ? 'undefined' : _typeof(el)) !== 'object' || typeof className !== 'string') {\n return;\n }\n\n while (el.parentNode && el.parentNode !== document) {\n el = el.parentNode;\n if (el.classList.contains(className)) {\n return el;\n }\n }\n};\n\n/**\n * Searches the dom for elements that possess a certain class\n * and removes this class from each element.\n *\n * @param {Array<string>} classNames - The class names to remove.\n */\nvar findAndRemoveClassNames = exports.findAndRemoveClassNames = function findAndRemoveClassNames(classNames) {\n\n for (var i = classNames.length; i--;) {\n var elements = document.getElementsByClassName(classNames[i]);\n for (var j = elements.length; j--;) {\n elements[j].classList.remove(classNames[i]);\n }\n }\n};\n\n/**\n * Polyfill until `isInteger` has become official. If the target\n * value is an integer, return true, otherwise return false.\n * If the value is NaN or infinite, return false.\n *\n * @param {*} value - The value to be tested for being an integer.\n * @return {boolean} True if the value is an integer, false otherwise.\n */\nvar isInteger = exports.isInteger = Number.isInteger || function (value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n *\n * @param {string} str\n * @param defaultReplacement\n * @param subStrings\n * @return {*}\n */\nvar replaceAll = exports.replaceAll = function replaceAll(str) {\n var defaultReplacement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var subStrings = arguments[2];\n\n\n for (var i = subStrings.length; i--;) {\n\n var subString = subStrings[i];\n var replacement = defaultReplacement;\n\n if (Array.isArray(subString)) {\n replacement = subString[1];\n subString = subString[0];\n }\n\n str = str.replace(subString, replacement);\n }\n\n return str;\n};\n\n/**\n * Sadly, setting fields with tw means that we lose the type information\n * since field values are persisted as strings and the type is not\n * included.\n *\n * To ensure that flags are always interpreted correctly, the following\n * function exists.\n *\n * We regard the following values as `true` (order matters):\n *\n * # Any string that can be translated into a number unequal `0`\n * # `\"true\"`\n * # Any number unequal `0`\n * # Boolean `true`\n *\n * The following as false (order matters):\n *\n * # Any string that can be translated into number `0`\n * # Every string unequal `\"true\"`\n * # The number `0`\n * # Boolean `false`\n *\n */\nvar isTrue = exports.isTrue = function isTrue(confVal, defVal) {\n\n if (confVal == null) {\n return !!defVal;\n } else if (typeof confVal === 'string') {\n var n = parseInt(confVal);\n return isNaN(n) ? confVal === 'true' : n !== 0;\n } else if (typeof confVal === 'boolean') {\n return confVal;\n } else if (typeof confVal === 'number') {\n return n !== 0;\n }\n\n return false;\n};\n\n/**\n * If the array contains the element, the element is removed from\n * the array in-place and the removed element.\n */\nvar removeArrayElement = exports.removeArrayElement = function removeArrayElement(arr, el) {\n\n var index = arr.indexOf(el);\n if (index > -1) {\n return arr.splice(index, 1)[0];\n }\n};\n\n/**\n * Returns a new object that contains only properties that start with\n * a certain prefix. The prefix is optionally removed from the result.\n *\n * @param {Object} obj\n * @param {string} prefix - The start sequence\n * @param {boolean} [removePrefix=false] - True if the prefix shall be removed\n * from the resulting property name, false otherwise.\n * @result {object}\n */\nvar getPropertiesByPrefix = exports.getPropertiesByPrefix = function getPropertiesByPrefix(obj, prefix, removePrefix) {\n\n var r = makeHashMap();\n for (var p in obj) {\n if (startsWith(p, prefix)) {\n r[removePrefix ? p.substr(prefix.length) : p] = obj[p];\n }\n }\n\n return r;\n};\n\n/**\n * Function to remove the prefix of a string\n */\nvar getWithoutPrefix = exports.getWithoutPrefix = function getWithoutPrefix(str, prefix) {\n return startsWith(str, prefix) ? str.substr(prefix.length) : str;\n};\n\n/**\n *\n */\nvar hasKeyWithPrefix = exports.hasKeyWithPrefix = function hasKeyWithPrefix(obj, prefix) {\n\n for (var p in obj) {\n if (startsWith(p, prefix)) {\n return true;\n }\n }\n\n return false;\n};\n\n/**\n *\n * @param arr\n */\nvar pickRandom = exports.pickRandom = function pickRandom(arr) {\n return arr[getRandomInt(0, arr.length - 1)];\n};\n\n/**\n * Loads the image from web and passes it to the callback as\n * object url.\n */\nvar getImgFromWeb = exports.getImgFromWeb = function getImgFromWeb(imgUri, callback) {\n\n if (!imgUri || typeof callback !== 'function') return;\n\n var xhr = new XMLHttpRequest();\n xhr.open('GET', imgUri, true);\n xhr.responseType = 'blob';\n xhr.onerror = function (e) {\n console.log(e);\n };\n xhr.onload = function (e) {\n if (this.readyState === 4 && (this.status === 200 || this.status === 0 && this.response.size > 0)) {\n var blob = this.response;\n callback(window.URL.createObjectURL(blob));\n }\n };\n\n try {\n xhr.send();\n } catch (e) {\n console.log(e);\n }\n};\n\n//~ utils.getNestedProperty = function(obj, propPath) {\n//~\n//~ propPath = propPath.split(\".\");\n//~ for (var i = propPath.length; i--;) {\n//~ if (obj !== null && typeof obj === \"object\") {\n//~ obj = obj[propPath[i]];\n//~ }\n//~\n//~ };\n\n/**\n * Works like get `getElementById()` but is based on a class name.\n * It will return the first element inside an optional parent (root)\n * that has a class of this name.\n *\n * @param {string} cls - The class name to search for.\n * @param {Element} [root=document] - The context to search in.\n * @param {boolean} [isRequired=true] - If true, an exception will be\n * thrown if no element can be retrieved. This is important\n * when depending on third party modules and class names change!\n * @throws {EnvironmentError} - May be thrown if\n * `isRequired` is set to true.\n * @return {Element} Either a dom element or null is returned.\n */\nvar getFirstElementByClassName = exports.getFirstElementByClassName = function getFirstElementByClassName(cls, root, isRequired) {\n\n var el = (root || document).getElementsByClassName(cls)[0];\n if (!el && (typeof isRequired === 'boolean' ? isRequired : true)) {\n var text = 'Missing element with class \"' + cls + '\" inside ' + root;\n throw new _exception.EnvironmentError(text);\n }\n\n return el;\n};\n\nvar getRandomLabel = exports.getRandomLabel = function getRandomLabel() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\n var adjective = pickRandom(['exciting', 'notable', 'epic', 'new', 'fancy', 'great', 'cool', 'fresh', 'funky', 'clever']);\n\n var noun = (options.object || pickRandom(['concept', 'idea', 'thought', 'topic', 'subject'])) + (options.plural ? 's' : '');\n\n return 'My ' + adjective + ' ' + noun;\n};\n\nvar _merge = function _merge(dest, src) {\n\n if ((typeof dest === 'undefined' ? 'undefined' : _typeof(dest)) !== 'object') {\n dest = {};\n }\n\n for (var p in src) {\n if (src.hasOwnProperty(p)) {\n if (src[p] != null) {\n // skip null or undefined\n dest[p] = _typeof(src[p]) === 'object' ? _merge(dest[p], src[p]) : src[p]; // primitive type, stop recursion\n }\n }\n }\n\n return dest;\n};\n\n/**\n * Merges `src` into `dest` which means that the merge transforms\n * the `dest` object itself. If src and dest both have the same\n * property path, src does only replace the primitive data type\n * at the end of the path.\n *\n * @todo Should null really be skipped or treated as value?\n *\n * @param {Object} dest - The destination object.\n * @param {...Object} sources - At least one object to merge into `dest`.\n * @return {Object} The original `dest` object.\n */\nvar merge = exports.merge = function merge(dest) {\n for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n // start the merging; i = 1 since first argument is the destination\n for (var i = 0, l = sources.length; i < l; i++) {\n var src = sources[i];\n if (src != null && (typeof src === 'undefined' ? 'undefined' : _typeof(src)) === 'object') {\n dest = _merge(dest, src);\n }\n }\n\n return dest;\n};\n\n/**\n * Adds or removes listeners from the target in capture or\n * non-capture (bubbling) mode.\n *\n * @param {string} task - Either \"add\" or \"remove\". Make sure to\n * always call add and remove with *excatly* the same listeners\n * Note: if you use bind, you change the function object.\n * @param {Element} target - The element to attach or remove the\n * listener to or from.\n * @param {Object<string, (Function|Array)>} listeners - The key is\n * the event name and the value is either a handler function\n * or an array where the first index is the handler function and\n * the second is a boolean that specifies whether to use capture\n * or not.\n * @param {boolean} [isCapt=false] - Whether to run the handler in\n * bubbling or capturing phase.\n */\nvar setDomListeners = exports.setDomListeners = function setDomListeners(task, target, listeners, isCapt) {\n\n isCapt = typeof isCapt === 'boolean' ? isCapt : false;\n task = task + 'EventListener';\n\n for (var event in listeners) {\n\n var l = listeners[event];\n\n if (typeof l === 'function') {\n\n target[task](event, l, isCapt);\n } else {\n // expect Array\n\n target[task](event, l[0], typeof l[1] === 'boolean' ? l[1] : isCapt);\n }\n }\n};\n\n/**\n * Removes all child nodes of a DOM element. This includes element\n * and non-element objects.\n */\nvar removeDOMChildNodes = exports.removeDOMChildNodes = function removeDOMChildNodes(el) {\n\n for (var i = el.childNodes.length; i--;) {\n el.removeChild(el.childNodes[i]);\n }\n};\n\n/**\n * Implementation of the algebraic modulus operation.\n *\n * In javascript '%' is really a remainder operator, not a modulus.\n * Algebraically speaking, a modulus operation always yields\n * positive results, while '%' in js can yield negative results.\n *\n * Note: divident mod divisor\n *\n * @param {number} divident\n * @param {number} divisor\n * @return {number}\n */\nvar mod = exports.mod = function mod(divident, divisor) {\n\n var remainder = divident % divisor;\n\n return Math.floor(remainder >= 0 ? remainder : remainder + divisor);\n};\n\n/**\n * Maps a coordinate to the nearest raster coordinate.\n *\n * @param {number} x\n * @param {number} y\n * @param {number} raster\n * @return {{x: number, y: number}}\n */\nvar getNearestRasterPosition = exports.getNearestRasterPosition = function getNearestRasterPosition(_ref, raster) {\n var x = _ref.x,\n y = _ref.y;\n\n\n var rasterHalf = raster / 2;\n\n // calculate distances to previous raster lines\n var distPrevX = mod(x, raster);\n var distPrevY = mod(y, raster);\n\n return {\n x: distPrevX < rasterHalf ? x - distPrevX : x - distPrevX + raster,\n y: distPrevY < rasterHalf ? y - distPrevY : y - distPrevY + raster\n };\n};\n\n/**\n * Force early binding of functions to this context.\n *\n * @param context the context to bind this function to (typically `this`)\n * @param {Array<string>} fnNames - The prototype function names\n * to bind to this context.\n */\nvar bindTo = exports.bindTo = function bindTo(context, fnNames) {\n\n for (var i = fnNames.length; i--;) {\n var fn = context[fnNames[i]];\n context[fnNames[i]] = fn.bind(context);\n }\n};\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/utils/basic.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/thirdParty": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/utils/thirdParty",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/utils/thirdParty\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/**\n * Modified TW-Code from Navigator widget\n * https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/widgets/navigator.js\n */\nvar generateDraftTitle = exports.generateDraftTitle = function generateDraftTitle(title) {\n\n var c = 0,\n draftTitle = void 0;\n do {\n draftTitle = 'Draft ' + (c ? c + 1 + ' ' : '') + 'of \\'' + title + '\\'';\n c++;\n } while ($tw.wiki.tiddlerExists(draftTitle));\n return draftTitle;\n};\n\n/**\n * Modified TW-Code from Navigator widget\n * https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/widgets/navigator.js\n */\nvar makeDraftTiddler = exports.makeDraftTiddler = function makeDraftTiddler(targetTitle) {\n\n // See if there is already a draft tiddler for this tiddler\n var draftTitle = $tw.wiki.findDraft(targetTitle);\n if (draftTitle) {\n return $tw.wiki.getTiddler(draftTitle);\n }\n // Get the current value of the tiddler we're editing\n var tiddler = $tw.wiki.getTiddler(targetTitle);\n // Save the initial value of the draft tiddler\n draftTitle = generateDraftTitle(targetTitle);\n var draftTiddler = new $tw.Tiddler(tiddler, {\n title: draftTitle,\n 'draft.title': targetTitle,\n 'draft.of': targetTitle\n }, $tw.wiki.getModificationFields());\n $tw.wiki.addTiddler(draftTiddler);\n return draftTiddler;\n};\n\n/**\n * TW-Code\n * @deprecated delete this in 2016 and use $tw.utils.getFullScreenApis instead\n */\nvar getFullScreenApis = exports.getFullScreenApis = function getFullScreenApis() {\n\n var d = document,\n db = d.body,\n result = {\n '_requestFullscreen': db.webkitRequestFullscreen !== undefined ? 'webkitRequestFullscreen' : db.mozRequestFullScreen !== undefined ? 'mozRequestFullScreen' : db.msRequestFullscreen !== undefined ? 'msRequestFullscreen' : db.requestFullscreen !== undefined ? 'requestFullscreen' : '',\n '_exitFullscreen': d.webkitExitFullscreen !== undefined ? 'webkitExitFullscreen' : d.mozCancelFullScreen !== undefined ? 'mozCancelFullScreen' : d.msExitFullscreen !== undefined ? 'msExitFullscreen' : d.exitFullscreen !== undefined ? 'exitFullscreen' : '',\n '_fullscreenElement': d.webkitFullscreenElement !== undefined ? 'webkitFullscreenElement' : d.mozFullScreenElement !== undefined ? 'mozFullScreenElement' : d.msFullscreenElement !== undefined ? 'msFullscreenElement' : d.fullscreenElement !== undefined ? 'fullscreenElement' : '',\n '_fullscreenChange': d.webkitFullscreenElement !== undefined ? 'webkitfullscreenchange' : d.mozFullScreenElement !== undefined ? 'mozfullscreenchange' : d.msFullscreenElement !== undefined ? 'MSFullscreenChange' : d.fullscreenElement !== undefined ? 'fullscreenchange' : ''\n };\n if (!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement) {\n return null;\n } else {\n return result;\n }\n};\n\n/**\n *\n * Slightly modified by me to allow an optional prefix.\n *\n * For the original code:\n *\n * Copyright (c) 2014, Hugh Kennedy, All rights reserved.\n * Code published under the BSD 3-Clause License\n *\n * @see oringal repo https://github.com/hughsk/flat\n * @see snapshot https://github.com/felixhayashi/flat\n * @see http://opensource.org/licenses/BSD-3-Clause\n */\nvar flatten = exports.flatten = function flatten(target) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\n var delimiter = opts.delimiter || '.';\n var prefix = opts.prefix || '';\n var output = {};\n\n function step(object, prev) {\n Object.keys(object).forEach(function (key) {\n var value = object[key];\n var isarray = opts.safe && Array.isArray(value);\n var type = Object.prototype.toString.call(value);\n var isobject = type === '[object Object]' || type === '[object Array]';\n\n var newKey = prev ? prev + delimiter + key : prefix + key;\n\n if (!isarray && isobject) {\n return step(value, newKey);\n }\n\n output[newKey] = value;\n });\n }\n\n step(target);\n\n return output;\n};\n\n/**\n * Copyright (c) 2014, Hugh Kennedy, All rights reserved.\n * Code published under the BSD 3-Clause License\n *\n * @see oringal repo https://github.com/hughsk/flat\n * @see snapshot https://github.com/felixhayashi/flat\n * @see http://opensource.org/licenses/BSD-3-Clause\n */\nvar unflatten = exports.unflatten = function unflatten(target) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\n var delimiter = opts.delimiter || '.';\n var result = {};\n\n if (Object.prototype.toString.call(target) !== '[object Object]') {\n return target;\n }\n\n // safely ensure that the key is\n // an integer.\n function getkey(key) {\n var parsedKey = Number(key);\n\n return isNaN(parsedKey) || key.indexOf('.') !== -1 ? key : parsedKey;\n }\n\n Object.keys(target).forEach(function (key) {\n var split = key.split(delimiter);\n var key1 = getkey(split.shift());\n var key2 = getkey(split[0]);\n var recipient = result;\n\n while (key2 !== undefined) {\n if (recipient[key1] === undefined) {\n recipient[key1] = typeof key2 === 'number' && !opts.object ? [] : {};\n }\n\n recipient = recipient[key1];\n if (split.length > 0) {\n key1 = getkey(split.shift());\n key2 = getkey(split[0]);\n }\n }\n\n // unflatten again for 'messy objects'\n recipient[key1] = unflatten(target[key], opts);\n });\n\n return result;\n};\n\n/**\n * An adopted version of pmario's version to create\n * uuids of type RFC4122, version 4 ID.\n *\n * Shortened version:\n * pmario (1.0 - 2011.05.22):\n * http://chat-plugins.tiddlyspace.com/#UUIDPlugin\n *\n * Original version:\n * Math.uuid.js (v1.4)\n * http://www.broofa.com\n * mailto:robert@broofa.com\n *\n * Copyright (c) 2010 Robert Kieffer\n * Dual licensed under the MIT and GPL licenses.\n *\n * ---\n * @see https://github.com/almende/vis/issues/432\n*/\nvar genUUID = exports.genUUID = function () {\n\n // Private array of chars to use\n var CHARS = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\n\n return function () {\n var chars = CHARS,\n uuid = new Array(36);\n\n var rnd = 0,\n r;\n for (var i = 0; i < 36; i++) {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n uuid[i] = '-';\n } else if (i == 14) {\n uuid[i] = '4';\n } else {\n if (rnd <= 0x02) rnd = 0x2000000 + Math.random() * 0x1000000 | 0;\n r = rnd & 0xf;\n rnd = rnd >> 4;\n uuid[i] = chars[i == 19 ? r & 0x3 | 0x8 : r];\n }\n }\n\n return uuid.join('');\n };\n}();\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/utils/thirdParty.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/tmap": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/utils/tmap",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSnapshotTitle = exports.getArrayValuesAsHashmapKeys = exports.getLookupTable = exports.keyOfItemWithProperty = exports.keysOfItemsWithProperty = exports.getDublicates = exports.getId = exports.refreshDataSet = exports.drawRaster = exports.getPrettyFilter = exports.groupByProperty = exports.isEdgeTypeMatch = exports.getEdgeTypeMatches = exports.getDataUri = exports.convert = exports.getValues = exports.getIterableCollection = exports.getLabel = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/utils/tmap\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nvar _vis = require('$:/plugins/felixhayashi/vis/vis.js');\n\nvar _vis2 = _interopRequireDefault(_vis);\n\nvar _exception = require('$:/plugins/felixhayashi/tiddlymap/js/exception');\n\nvar _basic = require('$:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic');\n\nvar basicUtils = _interopRequireWildcard(_basic);\n\nvar _wiki = require('$:/plugins/felixhayashi/tiddlymap/js/lib/utils/wiki');\n\nvar wikiUtils = _interopRequireWildcard(_wiki);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * TODO: this method does not seem to be used!\n * @param {Tiddler} tiddler\n * @param {string} aliasField - A tiddler field that contains an\n * alternative title (e.g. \"caption\").\n * @return {string|undefined} If the `aliasField` exists and is not\n * empty, the value of the `aliasField` otherwise the tiddler's\n * title or undefined if the tiddler doesn't exist.\n */\nvar getLabel = exports.getLabel = function getLabel(tiddler, aliasField) {\n var tObj = wikiUtils.getTiddler(tiddler);\n return (tObj && tObj.fields[aliasField] ? tObj.fields[aliasField] : tObj.fields.title).replace('\\\\n', '\\n');\n};\n\n/**\n * This function will return a collection object whose data can be\n * via `Object.keys(col)` in a loop.\n *\n * @param {Collection} col - A collection\n * @return {Hashmap} The iterable object.\n */\nvar getIterableCollection = exports.getIterableCollection = function getIterableCollection(col) {\n return col instanceof _vis2.default.DataSet ? col.get() : col;\n};\n\n/**\n * Extract all the values from a collection. If `col` is an object,\n * only properties are considered that are its own and iterable.\n *\n * @param {Collection} col\n * @return {Array} An array\n */\nvar getValues = exports.getValues = function getValues(col) {\n\n if (Array.isArray(col)) {\n\n return col; // bounce back.\n } else if (col instanceof _vis2.default.DataSet) {\n // a dataset\n\n return col.get({ returnType: 'Array' });\n }\n\n var result = [];\n var keys = Object.keys(col);\n for (var i = keys.length; i--;) {\n result.push(col[keys[i]]);\n }\n\n return result;\n};\n\n/**\n * Transforms a collection of a certain type into a collection of\n * another type.\n *\n * **Attention**: When trying to convert an array into a object, the\n * array will be simply bounced back. Let's hope no one added enumerable\n * properties to Array.prototype :)\n *\n * @param {Collection} col - The collection to convert.\n * @param {CollectionTypeString} [outputType=\"dataset\"] - The output type.\n * @return {Collection} A **new** collection of type `outputType`.\n */\nvar convert = exports.convert = function convert(col, outputType) {\n\n if ((typeof col === 'undefined' ? 'undefined' : _typeof(col)) !== 'object') {\n throw new _exception.InvalidArgumentException(col, outputType);\n }\n\n if (outputType === 'object') {\n outputType = 'hashmap';\n }\n\n var mapper = {\n array: function array(col) {\n return getValues(col);\n },\n hashmap: function hashmap(col) {\n return col instanceof _vis2.default.DataSet ? col.get({ returnType: 'Object' }) : col;\n },\n dataset: function dataset(col) {\n return col instanceof _vis2.default.DataSet ? col : !Array.isArray(col) ? getValues(col) : new _vis2.default.DataSet(col);\n }\n };\n\n return mapper[outputType](col);\n};\n\n/**\n * @param {Tiddler} tiddler\n * @param {string} [type]\n * @param {boolean} [isForceBase64]\n * @return {string}\n */\nvar getDataUri = exports.getDataUri = function getDataUri(tiddler, type, isForceBase64) {\n\n var imgTObj = wikiUtils.getTiddler(tiddler);\n type = type || imgTObj.fields.type || 'image/svg+xml';\n var body = imgTObj.fields.text;\n var encoding = $tw.config.contentTypeInfo[type].encoding;\n\n if (type === 'image/svg+xml') {\n\n // see http://stackoverflow.com/questions/10768451/inline-svg-in-css\n body = body.replace(/\\r?\\n|\\r/g, ' ');\n\n if (!basicUtils.hasSubString('xmlns', body)) {\n // @tiddlywiki it is bad to remove the xmlns attribute!\n\n body = body.replace(/<svg/, '<svg xmlns=\"http://www.w3.org/2000/svg\"');\n }\n }\n\n if (isForceBase64 && encoding !== 'base64') {\n encoding = 'base64';\n body = basicUtils.base64(body);\n }\n\n return 'data:' + type + ';' + encoding + ',' + body;\n};\n\n// @todo move this to environment\nvar eTyFiltAutoPrefix = '[all[]] ';\n\n/**\n *\n * @param filter\n * @param titles\n * @return {*}\n */\nvar getEdgeTypeMatches = exports.getEdgeTypeMatches = function getEdgeTypeMatches() {\n var filter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var titles = arguments[1];\n\n\n if (!titles) {\n titles = wikiUtils.getTiddlersByPrefix($tm.path.edgeTypes + '/', {\n iterator: 'eachTiddlerPlusShadows',\n removePrefix: true\n });\n }\n\n if (titles != null && !Array.isArray(titles)) {\n titles = Object.keys(titles);\n }\n\n return wikiUtils.getMatches(eTyFiltAutoPrefix + filter, titles);\n};\n\nvar isEdgeTypeMatch = exports.isEdgeTypeMatch = function isEdgeTypeMatch(title) {\n var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return wikiUtils.isMatch(title, eTyFiltAutoPrefix + filter);\n};\n\n/**\n *\n */\nvar groupByProperty = exports.groupByProperty = function groupByProperty(col, prop) {\n\n col = getIterableCollection(col);\n\n var result = basicUtils.makeHashMap();\n var keys = Object.keys(col);\n\n for (var i in keys) {\n\n var item = col[keys[i]];\n var val = item[prop];\n\n if (val == null) {\n // null or undefined\n\n // @todo use exception class\n throw 'Cannot group by property ' + prop;\n } else {\n\n if (!Array.isArray(result[val])) {\n result[val] = [];\n }\n result[val].push(item);\n }\n }\n\n return result;\n};\n\n/**\n * Turns the filter expression in a nicely formatted (but unusable)\n * text, making it easier to edit long filter expressions.\n *\n * @param {string} expr - A valid filter expression.\n * @result {string} A formatted (unusable) filter expression.\n */\nvar getPrettyFilter = exports.getPrettyFilter = function getPrettyFilter(expr) {\n\n // remove outer spaces and separate operands\n expr = expr.trim().replace('][', '] [');\n\n // regex to identify operands\n var re = /[+-]?\\[.+?[\\]\\}\\>]\\]/g;\n\n // get operands\n var operands = expr.match(re);\n\n // replace operands with dummies and trim again to avoid trailing spaces\n expr = expr.replace(re, ' [] ').trim();\n\n // turn it into an array\n var stringsPlusDummies = expr.split(/\\s+/);\n\n var operandIndex = 0;\n var parts = [];\n for (var i = 0, l = stringsPlusDummies.length; i < l; i++) {\n parts[i] = stringsPlusDummies[i] === '[]' ? operands[operandIndex++] : stringsPlusDummies[i];\n }\n\n return parts.join('\\n');\n};\n\n/**\n * This function will draw a raster on the network canvas that will\n * adjust to the network's current scaling factor and viewport offset.\n *\n * @param {CanvasRenderingContext2D} ctx - The canvas's context passed by vis.\n * @param {number} scaleFactor - The current scale factor of the network.\n * @param {Object} viewCenter - Virtual center point of the view.\n * @param {number} rasterSize - The size of the squares that are drawn.\n * @param {string} color - A string parsed as CSS color value.\n */\nvar drawRaster = exports.drawRaster = function drawRaster(ctx, scaleFactor, viewCenter, rasterSize) {\n var color = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '#D9D9D9';\n\n // from now on the most central raster point\n var _basicUtils$getNeares = basicUtils.getNearestRasterPosition(viewCenter, rasterSize),\n centerX = _basicUtils$getNeares.x,\n centerY = _basicUtils$getNeares.y;\n\n var scaledWidth = ctx.canvas.width / scaleFactor;\n var scaledHeight = ctx.canvas.height / scaleFactor;\n\n // some extra lines to ensure the canvas is completely filled with lines\n var extraLines = rasterSize * 2;\n\n // calculate the space that is required to draw the rasters\n var hSpace = Math.ceil(scaledWidth / rasterSize / 2) * rasterSize + extraLines;\n var vSpace = Math.ceil(scaledHeight / rasterSize / 2) * rasterSize + extraLines;\n\n // align the space to the center points and calculate the offsets\n var left = centerX - hSpace;\n var right = centerX + hSpace;\n var top = centerY - vSpace;\n var bottom = centerY + vSpace;\n\n ctx.beginPath();\n\n // draw vertical lines\n for (var x = left; x < right; x += rasterSize) {\n ctx.moveTo(x, top);\n ctx.lineTo(x, bottom);\n }\n\n // draw horizontal lines\n for (var y = top; y <= bottom; y += rasterSize) {\n ctx.moveTo(left, y);\n ctx.lineTo(right, y);\n }\n\n ctx.strokeStyle = color;\n ctx.fillStyle = color;\n ctx.stroke();\n};\n\n/**\n * Updates a dataset.\n *\n * Note: never use the dataset's update() method, it does not properly remove\n * obsolete properties! – use remove and add instead.\n *\n * @param {vis.DataSet} [ds] - The dataset to be updated\n * @param {Hashmap<id, Node>} ltNew - Lookup table that contains the *new* set of nodes.\n */\nvar refreshDataSet = exports.refreshDataSet = function refreshDataSet(ds, ltNew) {\n\n var ltOld = ds.get({ returnType: 'Object' });\n\n var inserted = [];\n var updated = [];\n var withoutPosition = [];\n var removed = [];\n\n for (var id in ltNew) {\n\n if (ltOld[id]) {\n // element already exists in graph\n\n if (basicUtils.isEqual(ltOld[id], ltNew[id])) {\n // simply keep element\n continue;\n }\n\n updated.push(id);\n ds.remove(id);\n } else {\n\n inserted.push(id);\n }\n\n if (ltNew[id].x === undefined) {\n withoutPosition.push(id);\n }\n\n ds.add(ltNew[id]);\n }\n\n for (var _id in ltOld) {\n if (!ltNew[_id]) {\n removed.push(_id);\n ds.remove(_id);\n }\n }\n\n return {\n withoutPosition: withoutPosition,\n inserted: inserted,\n updated: updated,\n removed: removed\n };\n};\n\n/**\n * Returns the tmap id that is stored in a designated field in the tiddler.\n *\n * @param tiddler\n * @return {string} the tmap id of this tiddler\n */\nvar getId = exports.getId = function getId(tiddler) {\n return wikiUtils.getTiddler(tiddler).fields['tmap.id'];\n};\n\n/**\n * Returns all other tiddlers that have the same tmap.id field entry.\n *\n * Note: typically tiddlers don't have the same id assigned, however,\n * this can happen when tiddlers are imported or cloned.\n *\n * @param {Tiddler} tiddler\n * @return {array<TiddlerReference>} a list of tiddlers with the same id as the\n * provided tiddler (excluding the provided tiddler itself).\n */\nvar getDublicates = exports.getDublicates = function getDublicates(tiddler) {\n\n var id = getId(tiddler);\n\n if (!id) {\n\n return [];\n }\n\n var tiddlers = wikiUtils.getTiddlersWithField('tmap.id', id, { limit: 2 });\n delete tiddlers[wikiUtils.getTiddlerRef(tiddler)];\n\n return Object.keys(tiddlers);\n};\n\n/**\n * Function that searches an array for an object with a property\n * having a certain value.\n *\n * Attention: Not the item itself but the item's key is returned.\n *\n * @param {Collection} col - The collection to search in.\n * @param {string} key - The property name to look for.\n * @param {*} [val] - An optional value that the object's property must have\n * in order to match.\n * @param {number} [limit] - An optional result limit (>0) to stop the search.\n * @return {Array<Id>} An array containing the indeces of matching items.\n */\nvar keysOfItemsWithProperty = exports.keysOfItemsWithProperty = function keysOfItemsWithProperty(col, key, val, limit) {\n\n col = getIterableCollection(col);\n\n var keys = Object.keys(col);\n var result = [];\n\n limit = typeof limit === 'number' ? limit : keys.length;\n\n for (var i = 0, l = keys.length; i < l; i++) {\n var index = keys[i];\n if (_typeof(col[index]) === 'object' && col[index][key]) {\n if (!val || col[index][key] === val) {\n result.push(index);\n if (result.length === limit) {\n break;\n }\n }\n }\n }\n\n return result;\n};\n\n/**\n *\n * @param col\n * @param key\n * @param val\n * @return {*}\n */\nvar keyOfItemWithProperty = exports.keyOfItemWithProperty = function keyOfItemWithProperty(col, key, val) {\n return keysOfItemsWithProperty(col, key, val, 1)[0];\n};\n\n/**\n * In a collection where all elements have a **distinct** property\n * `lookupKey`, use the value of each element's `lookupKey` as key\n * to identify the object. If no property `lookupKey` is specified,\n * the collection's values are used as keys and `true` is used as value,\n * however, if the used keys are not strings, an error is thrown.\n *\n * @param {Collection} col - The collection for which to create a lookup table.\n * @param {string} [lookupKey] - The property name to use as index in\n * the lookup table. If not specified, the collection values are tried\n * to be used as indeces.\n * @return {Hashmap} The lookup table.\n */\nvar getLookupTable = exports.getLookupTable = function getLookupTable(col, lookupKey) {\n\n col = getIterableCollection(col);\n\n var lookupTable = basicUtils.makeHashMap();\n var keys = Object.keys(col);\n\n for (var i = 0, l = keys.length; i < l; i++) {\n\n var key = keys[i];\n var idx = lookupKey ? col[key][lookupKey] : col[key];\n var type = typeof idx === 'undefined' ? 'undefined' : _typeof(idx);\n\n if (type === 'string' && idx !== '' || type === 'number') {\n if (!lookupTable[idx]) {\n // doesn't exist yet!\n lookupTable[idx] = lookupKey ? col[key] : true;\n continue;\n }\n }\n\n // @todo use exception class\n throw new Error('Cannot use \"' + idx + '\" as lookup table index');\n }\n\n return lookupTable;\n};\n\n/**\n * Alias for {@link getLookupTable}\n */\nvar getArrayValuesAsHashmapKeys = exports.getArrayValuesAsHashmapKeys = getLookupTable;\n\n/**\n *\n * @param viewLabel\n * @param type\n */\nvar getSnapshotTitle = exports.getSnapshotTitle = function getSnapshotTitle(viewLabel, type) {\n return 'Snapshot \\u2013 ' + viewLabel + ' (' + new Date().toDateString() + ').' + (type || 'png');\n};\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/utils/tmap.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/utils": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/utils",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.utils = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/utils\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nvar _basic = require('$:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic');\n\nvar basicUtils = _interopRequireWildcard(_basic);\n\nvar _thirdParty = require('$:/plugins/felixhayashi/tiddlymap/js/lib/utils/thirdParty');\n\nvar thirdPartyUtils = _interopRequireWildcard(_thirdParty);\n\nvar _wiki = require('$:/plugins/felixhayashi/tiddlymap/js/lib/utils/wiki');\n\nvar wikiUtils = _interopRequireWildcard(_wiki);\n\nvar _tmap = require('$:/plugins/felixhayashi/tiddlymap/js/lib/utils/tmap');\n\nvar tMapUtils = _interopRequireWildcard(_tmap);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/*** Code **********************************************************/\n\n/**\n * A utilities class that contains universally used helper functions\n * to abbreviate code and make my life easier.\n *\n * ATTENTION: This module must not require any other tiddlymap file\n * in order to avoid cyclic dependencies. For the same reason,\n * it must also not access the `$tm.*` object.\n *\n * Exceptions to this restriction:\n * - The utils module may access all `$tm.*` properties\n * defined in startup.environment.\n * - The utils module may require vendor libs or tiddlymap libs\n * that only require vendor libs themselves.\n *\n * @see Dom utilities {@link https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/utils/*}\n * @namespace utils\n */\nvar utils = exports.utils = _extends({}, basicUtils, thirdPartyUtils, wikiUtils, tMapUtils);\n\nexports.default = utils;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/utils/utils.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/wiki": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/utils/wiki",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.touch = exports.addTiddler = exports.getTiddlersByPrefix = exports.getTiddlerWithField = exports.getTiddlersWithField = exports.deleteByPrefix = exports.cp = exports.mv = exports.addTWlisteners = exports.getChildWidgetByProperty = exports.getMergedTiddlers = exports.isSystemOrDraft = exports.isDraft = exports.setText = exports.getText = exports.isLeftVersionGreater = exports.getEntry = exports.setEntry = exports.clone = exports.writeFieldData = exports.parseFieldData = exports.isPreviewed = exports.notify = exports.registerTransclude = exports.getElementNode = exports.getTiddlerNode = exports.getTranscludeNode = exports.isMatch = exports.getMatches = exports.moveFieldValues = exports.deleteTiddlers = exports.setField = exports.setSidebarTab = exports.tiddlerExists = exports.getField = exports.getTiddler = exports.getTiddlerRef = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _exception = require('$:/plugins/felixhayashi/tiddlymap/js/exception');\n\nvar _basic = require('$:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic');\n\nvar basicUtils = _interopRequireWildcard(_basic);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/utils/wiki\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/**\n * Gets a tiddler reference from a tRef or tObj\n *\n * @param {Tiddler|string} tiddler - A tiddler reference or object.\n * @return {TiddlerReference|null} A tiddler reference (title)\n */\nvar getTiddlerRef = exports.getTiddlerRef = function getTiddlerRef(tiddler) {\n\n if (tiddler instanceof $tw.Tiddler) {\n\n return tiddler.fields.title;\n } else if (typeof tiddler === 'string') {\n\n return tiddler;\n } else {\n\n throw new _exception.InvalidArgumentException(tiddler);\n }\n};\n\n/**\n * Similar to {@code wiki.getTiddler()} but also accepts a tObj as\n * argument, thus, making it unnecessary to always differentiate or remember\n * if we are dealing with an object or a reference.\n *\n * @see https://github.com/Jermolene/TiddlyWiki5/blob/master/boot/boot.js#L866\n * @param {Tiddler} tiddler - A tiddler reference or object.\n * @return {Tiddler} A tiddler object.\n */\nvar getTiddler = exports.getTiddler = function getTiddler(tiddler) {\n return $tw.wiki.getTiddler(tiddler instanceof $tw.Tiddler ? tiddler.fields.title : tiddler);\n};\n\n/**\n * Get a tiddler's field value. If the field does not exist or\n * its value is an empty string, return the default or an empty\n * string.\n */\nvar getField = exports.getField = function getField(tiddler, field) {\n var defValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n\n var tObj = getTiddler(tiddler);\n return !tObj ? defValue : tObj.fields[field] || defValue;\n};\n\n/**\n * Checks if tiddlers (including shadow tiddlers) exist.\n *\n * @param {Tiddler} tiddler\n * @return {boolean} True if the tiddler exists, false otherwise\n */\nvar tiddlerExists = exports.tiddlerExists = function tiddlerExists(tiddler) {\n\n if (!tiddler) {\n return false;\n }\n\n var tRef = getTiddlerRef(tiddler);\n\n return Boolean(tRef && ($tw.wiki.tiddlerExists(tRef) || $tw.wiki.isShadowTiddler(tRef)));\n};\n\nvar setSidebarTab = exports.setSidebarTab = function setSidebarTab(tRef) {\n\n setText(getTiddlersByPrefix('$:/state/tab/sidebar-')[0], tRef);\n};\n\n/**\n * Set a tiddler field to a given value.\n *\n * Setting the title field to another value will clone the tiddler.\n * In this case, better use @link{clone} as this is\n * semantically stronger.\n *\n * This method is guarded against\n * https://github.com/Jermolene/TiddlyWiki5/issues/2025\n *\n * @return {$tw.Tiddler|undefined} The tiddler object containing\n * the field with the assigned value.\n */\nvar setField = exports.setField = function setField(tiddler, field, value) {\n\n if (!tiddler || !field) {\n return;\n }\n\n var tRef = getTiddlerRef(tiddler);\n var fields = _defineProperty({\n title: tRef\n }, field, value);\n\n // do not use any tObj provided, it may result in a lost update!\n var tObj = $tw.wiki.getTiddler(tRef, true);\n\n if (field !== 'text' && tObj && !tObj.fields.text) {\n fields.text = '';\n }\n\n tObj = new $tw.Tiddler(tObj, fields);\n $tw.wiki.addTiddler(tObj);\n\n return tObj;\n};\n\n/**\n * Pendant to tw native {@code addTiddlers()}.\n *\n * Also removes tiddlers from the river.\n *\n * @param {TiddlerCollection} tiddlers - A collection of tiddlers\n * to be removed.\n */\nvar deleteTiddlers = exports.deleteTiddlers = function deleteTiddlers(tiddlers) {\n\n var keys = Object.keys(tiddlers);\n var storyList = $tw.wiki.getTiddlerList('$:/StoryList');\n\n for (var i = keys.length; i--;) {\n var tRef = getTiddlerRef(tiddlers[keys[i]]);\n if (!$tw.wiki.tiddlerExists(tiddlers[keys[i]])) {\n // this check is important!\n // see https://github.com/Jermolene/TiddlyWiki5/issues/1919\n continue;\n }\n\n var index = storyList.indexOf(tRef);\n if (index !== -1) {\n // tiddler is displayed in river\n storyList.splice(index, 1);\n setField('$:/StoryList', 'list', storyList);\n }\n\n // finally delete the tiddler;\n\n\n $tw.wiki.deleteTiddler(tRef);\n }\n};\n\nvar moveFieldValues = exports.moveFieldValues = function moveFieldValues(oldName, newName, isRemoveOldField, isIncludeSystemTiddlers, tiddlers) {\n\n if (oldName === newName) return;\n\n var allTiddlers = tiddlers || $tw.wiki.allTitles();\n\n for (var i = allTiddlers.length; i--;) {\n\n var tObj = getTiddler(allTiddlers[i]);\n\n if (tObj.isDraft() || !tObj.fields[oldName]) {\n continue;\n }\n\n if (!isIncludeSystemTiddlers && $tw.wiki.isSystemTiddler(allTiddlers[i])) {\n continue;\n }\n\n var fields = _defineProperty({}, newName, tObj.fields[oldName]);\n\n if (isRemoveOldField) {\n fields[oldName] = undefined;\n }\n $tw.wiki.addTiddler(new $tw.Tiddler(tObj, fields));\n }\n};\n\n/**\n * This function returns all tiddlers that match the filter.\n *\n * @Todo: skip drafts! Or not?\n *\n * @param {TiddlyWikiFilter} filter - The filter to use.\n * @param {TiddlerCollection} [tiddlers] - A set of tiddlers used as\n * source. If not defined, all tiddlers and system tiddlers are\n * selected. Shadows are *not* included.\n * @return {Array.<TiddlerReference>}\n */\nvar getMatches = exports.getMatches = function getMatches(filter, tiddlers, widget) {\n\n // use wiki as default source\n var source = undefined;\n\n // shortcuts for performance\n var wiki = $tw.wiki;\n\n if (typeof filter === 'string') {\n filter = wiki.compileFilter(filter);\n }\n\n // if a source is provided, create an iterator callback\n if (tiddlers != null && (typeof tiddlers === 'undefined' ? 'undefined' : _typeof(tiddlers)) === 'object') {\n\n if (!Array.isArray(tiddlers)) {\n tiddlers = Object.keys(tiddlers);\n }\n\n source = function source(callback) {\n for (var i = tiddlers.length; i--;) {\n var tObj = wiki.getTiddler(tiddlers[i]);\n callback(tObj, tiddlers[i]);\n }\n };\n }\n\n return filter.call(wiki, source, widget);\n};\n\n/**\n * Tries to match a single tiddler object against a filter.\n * Returns a boolean value.\n *\n * @param {Tiddler} tiddler - The object to apply the filter to.\n * @param {TiddlyWikiFilter} filter - The filter to use.\n * @return {boolean} True if the tiddler matches the filter, false otherwise.\n */\nvar isMatch = exports.isMatch = function isMatch(tiddler, filter) {\n return getTiddlerRef(tiddler) === getMatches(filter, [getTiddlerRef(tiddler)])[0];\n};\n\n/**\n *\n * @param {Tiddler} tiddler\n * @param {boolean} isBlock\n */\nvar getTranscludeNode = exports.getTranscludeNode = function getTranscludeNode(tiddler, isBlock) {\n return {\n type: 'transclude',\n attributes: {\n tiddler: {\n type: 'string',\n value: getTiddlerRef(tiddler) } },\n children: [],\n isBlock: !!isBlock\n };\n};\n\n/**\n *\n * @param {Tiddler} tiddler\n */\nvar getTiddlerNode = exports.getTiddlerNode = function getTiddlerNode(tiddler) {\n return {\n type: 'tiddler',\n attributes: {\n tiddler: {\n type: 'string', value: getTiddlerRef(tiddler) } },\n children: []\n };\n};\n\n/**\n *\n * @param type\n * @param className\n * @param text\n */\nvar getElementNode = exports.getElementNode = function getElementNode(type, className, text) {\n return {\n type: 'element',\n tag: type,\n attributes: {\n class: {\n type: 'string',\n value: className } },\n children: text ? [{ type: 'text', text: text }] : []\n };\n};\n\n/**\n *\n * @param {Widget} widget\n * @param {string} name\n * @param {Tiddler} tiddler\n * @return {*}\n */\nvar registerTransclude = exports.registerTransclude = function registerTransclude(widget, name, tiddler) {\n\n // if an instance exists, remove it\n basicUtils.removeArrayElement(widget.children, widget[name]);\n\n widget[name] = widget.makeChildWidget(getTranscludeNode(tiddler, true));\n widget.children.push(widget[name]);\n\n return widget[name];\n};\n\n/**\n * This function uses the tw-notification mechanism to display a\n * temporary message.\n *\n * @see https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/utils/dom/notifier.js\n * @param {string} message - A short message to display.\n */\nvar notify = exports.notify = function notify(message) {\n\n // @todo add to environment\n var notifyTiddlerRef = '$:/temp/tiddlymap/notify';\n\n $tw.wiki.addTiddler(new $tw.Tiddler({\n title: notifyTiddlerRef,\n text: message\n }));\n\n $tw.notifier.display(notifyTiddlerRef);\n};\n\n/**\n * The function allows to detect whether a widget is displayed\n * in preview or not.\n */\nvar isPreviewed = exports.isPreviewed = function isPreviewed(widget) {\n if (!widget) {\n return false;\n }\n\n // TODO: in the wiki utils we should not know about TiddlyMap domNode property!\n if (widget.domNode.isTiddlyWikiFakeDom) {\n return true;\n }\n\n if (widget.getVariable('tv-tiddler-preview')) {\n return true;\n } else {\n // fallback for < v5.1.9\n var cls = 'tc-tiddler-preview-preview';\n // TODO: in the wiki utils we should not know about TiddlyMap domNode property!\n return !!basicUtils.getAncestorWithClass(widget.parentDomNode, cls);\n }\n};\n\n/**\n * Parse json from field or return default value on error.\n *\n * @param {Tiddler} tiddler - The tiddler containing the json.\n * @param {string} field - The field with the json data.\n * @param {Object} [data] - An optional default value.\n * @return {*} Either the parsed data or the default data.\n */\nvar parseFieldData = exports.parseFieldData = function parseFieldData(tiddler) {\n var field = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text';\n var data = arguments[2];\n\n\n var tObj = getTiddler(tiddler);\n\n if (!tObj) {\n return data;\n }\n\n return basicUtils.parseJSON(tObj.fields[field], data);\n};\n\n/**\n * Serialize json data and store it in a tiddler's field.\n *\n * @param {Tiddler} tiddler - The tiddler to store the json in.\n * @param {string} field - The field that will store the json.\n * @param {Object} data - The json data.\n * @param {int} [indent = 0] - the indentation\n */\nvar writeFieldData = exports.writeFieldData = function writeFieldData(tiddler, field, data, indent) {\n\n if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) !== 'object') {\n return;\n }\n\n indent = parseInt(indent);\n indent = indent > 0 && field === 'text' ? indent : 0;\n\n setField(tiddler, field, JSON.stringify(data, null, indent));\n};\n\n/**\n * Clone a tiddler and give it another title.\n * This means the tiddlers are equal except from their titles.\n */\nvar clone = exports.clone = function clone(src, dest) {\n\n setField(src, 'title', dest);\n};\n\n/**\n * Set the value of a data tiddler entry (index) to a given value\n */\nvar setEntry = exports.setEntry = function setEntry(tiddler, prop, value) {\n\n $tw.wiki.setText(getTiddlerRef(tiddler), null, prop, value);\n};\n\n/**\n * Get the value of a data tiddler entry (index)\n */\nvar getEntry = exports.getEntry = function getEntry(tiddler, prop, defValue) {\n\n var data = $tw.wiki.getTiddlerData(getTiddlerRef(tiddler), {});\n return data[prop] == null ? defValue : data[prop];\n};\n\n//~ utils.getNestedProperty = function(obj, propPath) {\n//~\n//~ propPath = propPath.split(\".\");\n//~ for (var i = propPath.length; i--;) {\n//~ if (obj !== null && typeof obj === \"object\") {\n//~ obj = obj[propPath[i]];\n//~ }\n//~\n//~ };\n\n/**\n * Compare versions.\n * @return {boolean} Unlike `$tw.utils.checkVersions`, this function\n * only returns true if the left argument is greater than the right\n * argument.\n */\nvar isLeftVersionGreater = exports.isLeftVersionGreater = function isLeftVersionGreater(v1, v2) {\n return v1 !== v2 && $tw.utils.checkVersions(v1, v2);\n};\n\n/**\n *\n * @param tiddler\n * @param defValue\n */\nvar getText = exports.getText = function getText(tiddler, defValue) {\n return getField(tiddler, 'text', defValue);\n};\n\n/**\n *\n * @param tiddler\n * @param value\n */\nvar setText = exports.setText = function setText(tiddler, value) {\n\n setField(tiddler, 'text', value);\n};\n\n/**\n * Checks whether a tiddler is a draft or not.\n *\n * @param {Tiddler} tiddler - The tiddler to check on.\n */\nvar isDraft = exports.isDraft = function isDraft(tiddler) {\n\n var tObj = getTiddler(tiddler);\n return tObj && tObj.isDraft();\n};\n\n/**\n * Get a tiddler's text or otherwise return a default text.\n */\nvar isSystemOrDraft = exports.isSystemOrDraft = function isSystemOrDraft(tiddler) {\n return $tw.wiki.isSystemTiddler(getTiddlerRef(tiddler)) || isDraft(tiddler);\n};\n\n/**\n * Function to merge an array of tiddlers into a single tiddler.\n *\n * @param {Array<TiddlerReference|Tiddler>} tiddlers - The\n * tiddlers to merge.\n * @param {string} [title=null] - The title where the result is\n * written to. If not specified, the first array item is used\n * as output title.\n */\nvar getMergedTiddlers = exports.getMergedTiddlers = function getMergedTiddlers(tiddlers, title) {\n\n if (!Array.isArray(tiddlers)) {\n return;\n }\n\n // turn all array elements into tiddler objects\n for (var i = tiddlers.length; i--;) {\n tiddlers[i] = getTiddler(tiddlers[i]);\n }\n\n if (!tiddlers.length) {\n return;\n }\n\n tiddlers.push({ title: title || tiddlers[0].fields.title }, $tw.wiki.getModificationFields(), $tw.wiki.getCreationFields());\n\n // add context for `apply()` function\n tiddlers.unshift(null);\n\n return new (Function.prototype.bind.apply($tw.Tiddler, tiddlers))();\n};\n\n/**\n * Depth first search\n */\nvar getChildWidgetByProperty = exports.getChildWidgetByProperty = function getChildWidgetByProperty(widget, prop, val) {\n\n var children = widget.children;\n for (var i = children.length; i--;) {\n var child = children[i];\n if (child[prop] === val) {\n return child;\n } else {\n child = getChildWidgetByProperty(child, prop, val);\n if (child) {\n return child;\n }\n }\n }\n};\n\n/**\n * Register listeners to widget using a hashmap.\n *\n * @param {Hashmap<Key, Function>} listeners - The listeners to attach.\n * @param {Widget} widget - the widget to attach the listeners to.\n * @param {Object} context - The context to bind the listeners to.\n */\nvar addTWlisteners = exports.addTWlisteners = function addTWlisteners(listeners, widget, context) {\n\n for (var id in listeners) {\n widget.addEventListener(id, listeners[id].bind(context));\n }\n};\n\n/**\n * Renames all tiddler titles that are prefixed with `oldPrefix`\n * into titles that are prefixed with `newPrefix` by replacing\n * `oldPrefix` with `newPrefix`.\n *\n * The force option somewhat ensures atomicity.\n *\n * @param {string} oldPrefix - Moves all tiddlers with this prefix.\n * @param {string} newPrefix - All tiddlers moved tiddlers will\n * receive this new prefix.\n * @param {boolean} [isForce=false] - If a new title would override\n * an existing title, and `force` is not set, then nothing will\n * happen and undefined is returned by the function.\n * @param {boolean} [isDelete=true] - True, if the tiddlers with the\n * old prefix should be deleted or false, if they should be kept.\n * @returns {Object<string, string>} - A hashmap that maps the old\n * and the new path.\n */\nvar mv = exports.mv = function mv(oldPrefix, newPrefix, isForce, isDelete) {\n\n if (oldPrefix === newPrefix || !oldPrefix || !newPrefix) {\n return;\n }\n\n isForce = typeof isForce === 'boolean' ? isForce : false;\n isDelete = typeof isDelete === 'boolean' ? isDelete : true;\n\n // prepare\n var targets = getTiddlersByPrefix(oldPrefix);\n var fromToMapper = basicUtils.makeHashMap();\n\n for (var i = targets.length; i--;) {\n\n var oldTRef = targets[i];\n var newTRef = oldTRef.replace(oldPrefix, newPrefix);\n if ($tw.wiki.tiddlerExists(newTRef) && !isForce) {\n return; // undefined\n }\n fromToMapper[oldTRef] = newTRef;\n }\n\n for (var _oldTRef in fromToMapper) {\n\n setField(_oldTRef, 'title', fromToMapper[_oldTRef]);\n if (isDelete) {\n $tw.wiki.deleteTiddler(_oldTRef);\n }\n }\n\n return fromToMapper;\n};\n\n/**\n * Clones all tiddler titles that are prefixed with `oldPrefix`\n * into titles that are instead prefixed with `newPrefix`.\n *\n * The force option somewhat ensures atomicity.\n *\n * @param {string} oldPrefix - Moves all tiddlers with this prefix.\n * @param {string} newPrefix - All tiddlers moved tiddlers will\n * receive this new prefix.\n * @param {boolean} [isForce=false] - If a new title would override\n * an existing title, and `force` is not set, then nothing will\n * happen and undefined is returned by the function.\n * @returns {Object<string, string>} - A hashmap that maps the old\n * and the new path.\n */\nvar cp = exports.cp = function cp(oldPrefix, newPrefix, isForce) {\n return mv(oldPrefix, newPrefix, isForce, false);\n};\n\n/**\n * Delete all tiddlers with a given prefix.\n *\n * @param {string} prefix - The prefix\n */\nvar deleteByPrefix = exports.deleteByPrefix = function deleteByPrefix(prefix, tiddlers) {\n\n if (!prefix) {\n return;\n }\n\n tiddlers = tiddlers || $tw.wiki.allTitles();\n\n var deletedTiddlers = [];\n for (var i = tiddlers.length; i--;) {\n if (basicUtils.startsWith(tiddlers[i], prefix)) {\n $tw.wiki.deleteTiddler(tiddlers[i]);\n deletedTiddlers.push(deletedTiddlers[i]);\n }\n }\n\n return deletedTiddlers;\n};\n\n/**\n * Returns all tiddlers that possess a property with a certain value.\n *\n * @param {string} fieldName - The property name to look for.\n * @param {string} [value] - If provided, the field's value must\n * equal this value in order to match.\n * @param {Hashmap} [options] - Further options.\n * @param {TiddlerCollection} [options.tiddlers=$tw.wiki.allTitles()] - A collection\n * of tiddlers to perform the search on.\n * @param {boolean} [options.isIncludeDrafts=false] - True if drafts of the found\n * tiddlers are also included in the result set.\n * @param {number} [options.limit] - A positive number delimiting the maximum\n * number of results.\n * tiddlers are also included in the result set.\n * @return {Hashmap.<TiddlerReference, Tiddler>} Result\n */\nvar getTiddlersWithField = exports.getTiddlersWithField = function getTiddlersWithField(fieldName, value) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\n var tiddlers = options.tiddlers || $tw.wiki.allTitles();\n var isIncludeDrafts = options.isIncludeDrafts === true;\n var result = basicUtils.makeHashMap();\n var keys = Object.keys(tiddlers);\n var hasOwnProp = $tw.utils.hop;\n var limit = options.limit || 0;\n\n for (var i = keys.length; i--;) {\n\n var tObj = getTiddler(tiddlers[keys[i]]);\n var fields = tObj.fields;\n if (hasOwnProp(fields, fieldName) && (!hasOwnProp(fields, 'draft.of') || isIncludeDrafts)) {\n if (!value || fields[fieldName] === value) {\n result[fields.title] = tObj;\n if (--limit === 0) {\n break;\n }\n }\n }\n }\n\n return result;\n};\n\n/**\n *\n * @param name\n * @param value\n */\nvar getTiddlerWithField = exports.getTiddlerWithField = function getTiddlerWithField(name, value) {\n return Object.keys(getTiddlersWithField(name, value, { limit: 1 }))[0];\n};\n\n/**\n * Iterates over all tiddlers in a given way and returns tiddlers\n * whose title matches the prefix string.\n *\n * @param {string} prefix - The prefix to match\n * @param {Hashmap} [options] - An options object.\n * @param {string} [options.iterator=\"each\"] - A tw store iterator\n * function, e.g. \"eachShadow\" or \"ShadowPlusTiddlers\".\n * @param {boolean} [options.removePrefix= false] - Whether to remove\n * the prefix or to leave it.\n * @return {Array<string>} The matches with or without the prefix.\n */\nvar getTiddlersByPrefix = exports.getTiddlersByPrefix = function getTiddlersByPrefix(prefix) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\n var removePrefix = options.removePrefix === true;\n var result = [];\n var iterator = $tw.wiki[options.iterator || 'each'];\n\n iterator(function (tObj, tRef) {\n if (basicUtils.startsWith(tRef, prefix)) {\n result.push(removePrefix ? basicUtils.getWithoutPrefix(tRef, prefix) : tRef);\n }\n });\n\n return result;\n};\n\n/**\n * Advanced addTiddler method.\n *\n * It adds timestamps and only adds the tiddler if it doesn't exist\n * yet or the force option is used.\n *\n * This method is guarded against\n * https://github.com/Jermolene/TiddlyWiki5/issues/2025\n */\nvar addTiddler = exports.addTiddler = function addTiddler(tiddler, isForce) {\n\n var tObj = getTiddler(tiddler);\n\n if (!isForce && tObj) {\n return tObj;\n }\n\n tObj = new $tw.Tiddler({\n title: tiddler,\n text: ''\n }, $tw.wiki.getModificationFields(), $tw.wiki.getCreationFields());\n\n $tw.wiki.addTiddler(tObj);\n\n return tObj;\n};\n\nvar touch = exports.touch = function touch(tRef) {\n setField(tRef, 'modified', new Date());\n};\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/utils/wiki.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/macro/tmap": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/macro/tmap",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.params = exports.name = exports.run = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; // @preserve\n/*\\\ntitle: $:/plugins/felixhayashi/tiddlymap/js/macro/tmap\ntype: application/javascript\nmodule-type: macro\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nvar _EdgeType = require('$:/plugins/felixhayashi/tiddlymap/js/EdgeType');\n\nvar _EdgeType2 = _interopRequireDefault(_EdgeType);\n\nvar _ViewAbstraction = require('$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction');\n\nvar _ViewAbstraction2 = _interopRequireDefault(_ViewAbstraction);\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*** Code **********************************************************/\n\nvar name = 'tmap';\nvar params = getParamSlots(5);\n\n/**\n * @this MacroCallWidget\n * @return {string} the result of the operation or an empty string.\n * @private\n */\nfunction run() {\n\n this.substVarRefs = this.substituteVariableReferences;\n\n var fn = command[arguments[0]];\n var result = null;\n\n if (typeof fn === 'function') {\n var args = Array.prototype.slice.call(arguments, 1);\n result = fn.apply(this, args);\n }\n\n return typeof result === 'string' ? result : '';\n}\n\n/**\n * unfortunately tw forces us to specify params in advance so I\n * will reserve some argument slots here.\n * @private\n */\nfunction getParamSlots(maxArgs) {\n\n var arr = [];\n for (var i = 0; i < maxArgs; i++) {\n arr.push({ name: 'arg' + i });\n }\n\n return arr;\n}\n\n/**\n * In connection with tiddlymap, this macro allows us to access\n * system information from within tiddlers as well as to execute\n * some util functions.\n *\n * Every command will be called with `this` pointing to the current\n * MacroCallWidget instance!\n *\n * @private\n */\nvar command = _utils2.default.makeHashMap();\n\n/**\n * Returns the basename of the string\n *\n * @see {@link utils.basename}\n */\ncommand.basename = function (separator) {\n\n var str = this.getVariable('currentTiddler');\n return _utils2.default.getBasename(str, separator);\n};\n\n/**\n * TW messes with svg urls so we always use base64 encoding when\n * a data uri is requested as macro call\n */\ncommand.datauri = function (tiddler, type) {\n\n return _utils2.default.getDataUri(tiddler, type, true);\n};\n\ncommand.testJSON = function (fieldName) {\n\n var tObj = $tw.wiki.getTiddler(this.getVariable('currentTiddler'));\n\n try {\n JSON.parse(tObj.fields[fieldName]);\n return 'valid';\n } catch (SyntaxError) {\n return 'malformed';\n }\n};\n\ncommand.splitAndSelect = function (separator, index) {\n\n var str = this.getVariable('currentTiddler');\n var result = str.split(separator)[index];\n\n return result != null ? result : str;\n};\n\ncommand.concat = function () {\n\n var str = '';\n for (var i = 1, l = arguments.length; i < l; i++) {\n str += arguments[i];\n }\n return str;\n};\n\ncommand.uuid = function () {\n\n return _utils2.default.genUUID();\n};\n\ncommand.regRepl = function () {\n\n var oldStr = this.substVarRefs(arguments[0]);\n var regStr = arguments[1];\n var newStr = this.substVarRefs(arguments[2]);\n var regFlags = this.substVarRefs(arguments[4]);\n\n return oldStr.replace(new RegExp(regStr, regFlags), newStr);\n};\n\ncommand.halfOfString = function () {\n\n var str = this.substVarRefs(arguments[0]);\n\n if (!str) {\n return '';\n }\n\n return str.substr(0, Math.ceil(str.length / 2));\n};\n\ncommand.isETyVisible = function (view, userInput) {\n\n view = new _ViewAbstraction2.default(view);\n\n var id = command.getETyId.call(this, view, userInput);\n\n return '' + view.isEdgeTypeVisible(id);\n};\n\ncommand.getETyId = function (view, userInput) {\n\n view = new _ViewAbstraction2.default(view);\n\n var type = _EdgeType2.default.getInstance(userInput || this.getVariable('currentTiddler'));\n\n if (!type.namespace) {\n var _EdgeType$getIdParts = _EdgeType2.default.getIdParts(type.id),\n marker = _EdgeType$getIdParts.marker,\n _name = _EdgeType$getIdParts.name;\n\n var namespace = view.getConfig('edge_type_namespace');\n\n type = _EdgeType2.default.getInstance(_EdgeType2.default.getId(marker, namespace, _name));\n }\n\n return type.id;\n};\n\ncommand.scale = function () {\n\n var str = '';\n for (var i = 1, l = parseInt(arguments[0]); i < l; i++) {\n str += '[[' + i + ']]';\n }\n return str;\n};\n\ncommand.mergeFields = function () {\n\n var tObj = _utils2.default.getTiddler(arguments[0]);\n var prefix = arguments[1];\n var separator = arguments[2] || ' ';\n\n if (!tObj) return;\n\n var fields = _utils2.default.getPropertiesByPrefix(tObj.fields, prefix);\n var str = '';\n for (var name in fields) {\n\n if (typeof fields[name] === 'string') {\n\n str += fields[name] + separator;\n }\n }\n return str;\n};\n\ncommand.option = function (path, unit) {\n\n if (typeof $tm == \"undefined\") {\n // this macro is referenced from css which means we cannot\n // expect $tm to exist, e.g when rendering static css\n // @see https://github.com/felixhayashi/TW5-TiddlyMap/issues/257#issuecomment-427343226\n return '';\n }\n\n var prop = $tm;\n var propertyPath = path.split('.');\n\n for (var i = 0; i < propertyPath.length; i++) {\n if ((typeof prop === 'undefined' ? 'undefined' : _typeof(prop)) == 'object' && prop[propertyPath[i]]) {\n prop = prop[propertyPath[i]];\n }\n }\n\n // TODO: ugly, use regex\n if (unit && typeof prop === 'string' && _utils2.default.hasSubString(unit) && prop.lastIndexOf(unit) + unit.length === prop.length) {\n prop = prop + unit;\n }\n\n return prop;\n};\n\n/*** Exports *******************************************************/\n\nexports.run = run;\nexports.name = name;\nexports.params = params;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/macro/MapMacro.js.map\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/felixhayashi/tiddlymap/js/Adapter": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/Adapter",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/Adapter\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nvar _ViewAbstraction = require('$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction');\n\nvar _ViewAbstraction2 = _interopRequireDefault(_ViewAbstraction);\n\nvar _EdgeType = require('$:/plugins/felixhayashi/tiddlymap/js/EdgeType');\n\nvar _EdgeType2 = _interopRequireDefault(_EdgeType);\n\nvar _NodeType = require('$:/plugins/felixhayashi/tiddlymap/js/NodeType');\n\nvar _NodeType2 = _interopRequireDefault(_NodeType);\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _Edge = require('$:/plugins/felixhayashi/tiddlymap/js/Edge');\n\nvar _Edge2 = _interopRequireDefault(_Edge);\n\nvar _vis = require('$:/plugins/felixhayashi/vis/vis.js');\n\nvar _vis2 = _interopRequireDefault(_vis);\n\nvar _environment = require('$:/plugins/felixhayashi/tiddlymap/js/lib/environment');\n\nvar env = _interopRequireWildcard(_environment);\n\nvar _contrastcolour = require('$:/core/modules/macros/contrastcolour.js');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/***************************** CODE ********************************/\n\n/**\n * This library acts as an abstraction layer above the tiddlywiki\n * system. All the provided methods give the api-user the chance\n * to interact with tiddlywiki as if it was a simple graph database.\n *\n * Everything that is related to retrieving or inserting nodes and\n * edges is handled by the adapter class.\n *\n * You don't need to create your own instance of this class.\n * The adapter service may be accessed from anywhere using\n * `$tm.apapter`.\n *\n * @constructor\n */\nvar Adapter = function () {\n\n /**\n * @param {Tracker} tracker\n * @param {EdgeTypeSubscriberRegistry} edgeTypeSubscriberRegistry\n */\n function Adapter(tracker, edgeTypeSubscriberRegistry) {\n _classCallCheck(this, Adapter);\n\n this.getTiddlerById = tracker.getTiddlerById.bind(tracker);\n this.getId = tracker.getIdByTiddler.bind(tracker);\n this.assignId = tracker.assignId.bind(tracker);\n\n this.edgeTypeSubscriberRegistry = edgeTypeSubscriberRegistry;\n\n this.indeces = $tm.indeces;\n this.wiki = $tw.wiki;\n\n this.visShapesWithTextInside = _utils2.default.getLookupTable(['ellipse', 'circle', 'database', 'box', 'text']);\n }\n\n /**\n * This function will delete the specified edge object from the system.\n *\n * @param {Edge} edge - The edge to be deleted. The edge necessarily\n * needs to possess an `id` and a `from` property.\n * @return {Edge} The deleted edge is returned.\n */\n\n\n _createClass(Adapter, [{\n key: 'deleteEdge',\n value: function deleteEdge(edge) {\n\n return this._processEdge(edge, 'delete');\n }\n\n /**\n * Persists an edge by storing the vector (from, to, type).\n *\n * @param {Edge} edge - The edge to be saved. The edge necessarily\n * needs to possess a `to` and a `from` property.\n * @return {Edge} The newly inserted edge.\n */\n\n }, {\n key: 'insertEdge',\n value: function insertEdge(edge) {\n\n return this._processEdge(edge, 'insert');\n }\n\n /**\n * Removes multiple edges from several stores.\n *\n * @param {EdgeCollection} edges - The edges to be deleted.\n */\n\n }, {\n key: 'deleteEdges',\n value: function deleteEdges(edges) {\n\n edges = _utils2.default.convert(edges, 'array');\n for (var i = edges.length; i--;) {\n this.deleteEdge(edges[i]);\n }\n }\n\n /**\n * Private function to handle the insertion or deletion of an edge.\n * It prepares the process according to the action type and delegates\n * the task to more specific functions.\n *\n * @private\n * @return {Edge} The processed edge.\n */\n\n }, {\n key: '_processEdge',\n value: function _processEdge(edge, action) {\n\n $tm.logger('debug', 'Edge', action, edge);\n\n // get from-node and corresponding tiddler\n var fromTRef = this.getTiddlerById(edge.from);\n\n if (!fromTRef || !_utils2.default.tiddlerExists(fromTRef)) {\n return;\n }\n\n var tObj = _utils2.default.getTiddler(fromTRef);\n var type = this.indeces.allETy[edge.type] || _EdgeType2.default.getInstance(edge.type);\n var handlers = this.edgeTypeSubscriberRegistry.getAllForType(type);\n var fn = action + 'Edge';\n\n for (var i = handlers.length; i--;) {\n handlers[i][fn](tObj, edge, type);\n }\n\n // if type didn't exist yet, create it\n if (action === 'insert' && !type.exists()) {\n type.save();\n }\n\n return edge;\n }\n\n /**\n * This function will return an adjacency list for the nodes\n * present in the current system. The list may be restricted by\n * optional filters.\n *\n * @param {string} [groupBy='to'] - Specifies by which property the\n * adjacency list is indexed. May be either 'from' or 'to'.\n * @param {Hashmap} [opts] - An optional options object.\n * @param {Hashmap} [opts.typeWL] - A whitelist lookup-table\n * that restricts which edge-types are included.\n * @param {Hashmap} [opts.edges] - A set of edges on which basis\n * the adjacency list is build. If not provided,\n * all edges in the system are considered.\n * @return {Object<Id, Array<Edge>>} For each key (a node id) an\n * array of edges pointing 'from' (or 'to'; depends on `groupBy`)\n * is supplied as value.\n */\n\n }, {\n key: 'getAdjacencyList',\n value: function getAdjacencyList(groupBy) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\n $tm.start('Creating adjacency list');\n\n if (!opts.edges) {\n var tRefs = _utils2.default.getMatches(env.selector.allPotentialNodes);\n opts.edges = this.getEdgesForSet(tRefs, opts.toWL, opts.typeWL);\n }\n\n var adjList = _utils2.default.groupByProperty(opts.edges, groupBy || 'to');\n\n $tm.stop('Creating adjacency list');\n\n return adjList;\n }\n\n /**\n * This function will return all neighbours of a graph denoted by\n * a set of tiddlers.\n *\n * @todo parts of this code may be outsourced into a function to\n * prevent repeating code.\n *\n * @param {Array<TiddlerReference>} matches - The original set that\n * defines the starting point for the neighbourhood discovery\n * @param {Hashmap} [opts] - An optional options object.\n * @param {Hashmap} [opts.typeWL] - A whitelist lookup-table\n * that restricts which edges are travelled to reach a neighbour.\n * @param {Hashmap} [opts.edges] - An initial set of edges that is\n * used in the first step to reach immediate neighbours, if no\n * set of edges is specified, all exsisting edges will be considered.\n * @param {number} [opts.steps] - An integer value that specifies\n * the scope of the neighbourhood. A node is considered a neighbour\n * if it can be reached within the given number of steps starting\n * from original set of tiddlers returned by the node filter.\n * @param {Hashmap} [opts.addProperties] - a hashmap\n * containing properties to be added to each node.\n * For example:\n * {\n * group: 'g1',\n * color: 'red'\n * }\n * @return {Object} An object of the form:\n * {\n * nodes: { *all neighbouring nodes* },\n * edges: { *all edges connected to neighbours* },\n * }\n */\n\n }, {\n key: 'getNeighbours',\n value: function getNeighbours(matches) {\n var _this = this;\n\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\n $tm.start('Get neighbours');\n\n var addProperties = opts.addProperties,\n toWL = opts.toWL,\n typeWL = opts.typeWL,\n steps = opts.steps;\n var allETy = this.indeces.allETy;\n\n // index of all tiddlers have already are been visited, either by\n // having been included in the original set, or by having been\n // recorded as neighbour during the discovery.\n\n var visited = _utils2.default.getArrayValuesAsHashmapKeys(matches);\n var view = _ViewAbstraction2.default.exists(opts.view) ? new _ViewAbstraction2.default(opts.view) : null;\n var allEdgesLeadingToNeighbours = _utils2.default.makeHashMap();\n var allNeighbours = _utils2.default.makeHashMap();\n var maxSteps = parseInt(steps) > 0 ? steps : 1;\n var direction = opts.direction || view && view.getConfig('neighbourhood_directions');\n var isWalkBoth = !direction || direction === 'both';\n var isWalkIn = isWalkBoth || direction === 'in';\n var isWalkOut = isWalkBoth || direction === 'out';\n\n // in order to apply the node-filter also to neighbours we need to make it\n // include all tiddlers in the filter's source (e.g. a tiddler and a few neighbours)\n // and then apply the filter – which now has the chance to take away tiddlers\n // a few filters from the set\n var neighFilter = view && '[all[]] ' + view.getNodeFilter('raw');\n\n // adjacency receives whitelists through opts\n var adjList = this.getAdjacencyList('to', opts);\n\n var addAsNeighbour = function addAsNeighbour(edge, role, neighboursOfThisStep) {\n allEdgesLeadingToNeighbours[edge.id] = edge;\n var tRef = _this.getTiddlerById(edge[role]);\n\n if (view && _utils2.default.isTrue($tm.config.sys.nodeFilterNeighbours) && !_utils2.default.isMatch(tRef, neighFilter)) {\n return;\n }\n\n if (!visited[tRef]) {\n visited[tRef] = true;\n var node = _this.makeNode(tRef, addProperties);\n if (node) {\n // saveguard against obsolete edges or other problems\n // record node\n allNeighbours[node.id] = node;\n neighboursOfThisStep.push(tRef);\n }\n }\n };\n\n // needed later\n var step = void 0;\n\n // loop if still steps to be taken and we have a non-empty starting set\n for (step = 0; step < maxSteps && matches.length; step++) {\n\n // neighbours that are discovered in the current step;\n // starting off from the current set of matches;\n var neighboursOfThisStep = [];\n\n // loop over all nodes in the original set\n for (var i = matches.length; i--;) {\n\n if (_utils2.default.isSystemOrDraft(matches[i])) {\n // = this might happen if the user manually created edges\n // that link to a system/draft tiddler or if the original\n // set contained system/draft tiddlers.\n continue;\n }\n\n // get all outgoing edges\n // = edges originating from the starting set and point outwards\n var outgoing = this.getEdges(matches[i], toWL, typeWL);\n for (var id in outgoing) {\n\n var t = allETy[outgoing[id].type];\n if (isWalkBoth || isWalkOut && t.toArrow || isWalkIn && t.invertedArrow) {\n\n addAsNeighbour(outgoing[id], 'to', neighboursOfThisStep);\n }\n }\n\n // get all incoming edges\n // = edges originating from outside pointing to the starting set\n var incoming = adjList[this.getId(matches[i])];\n if (!incoming) {\n continue;\n }\n\n for (var j = incoming.length; j--;) {\n var _t = allETy[incoming[j].type];\n if (isWalkBoth || isWalkIn && _t.toArrow || isWalkOut && _t.invertedArrow) {\n addAsNeighbour(incoming[j], 'from', neighboursOfThisStep);\n }\n }\n }\n\n // the current set of newly discovered neighbours forms the\n // starting point for the next discovery\n matches = neighboursOfThisStep;\n }\n\n var neighbourhood = {\n nodes: allNeighbours,\n edges: allEdgesLeadingToNeighbours\n };\n\n $tm.logger('debug', 'Retrieved neighbourhood', neighbourhood, 'steps', step);\n\n $tm.stop('Get neighbours');\n\n return neighbourhood;\n }\n\n /**\n * This function will assemble a graph object based on the supplied\n * node and edge filters. Optionally, a neighbourhood may be\n * merged into the graph neighbourhood.\n *\n * @param {string|ViewAbstraction} [view] - The view in which\n * the graph will be displayed.\n * @param {string|ViewAbstraction} [filter] - If supplied,\n * this will act as node filter that defines which nodes\n * are to be displayed in the graph; a possible view node filter\n * would be ignored.\n * @param {Hashmap} [edgeTypeWL] - A whitelist lookup-table\n * that restricts which edges are travelled to reach a neighbour.\n * @param {number} [neighbourhoodScope] - An integer value that\n * specifies the scope of the neighbourhood in steps.\n * See {@link Adapter#getNeighbours}\n * @return {Object} An object of the form:\n * {\n * nodes: { *all nodes in the graph* },\n * edges: { *all edges in the graph* },\n * }\n * Neighbours will be receive the 'tmap:neighbour' type.\n */\n\n }, {\n key: 'getGraph',\n value: function getGraph() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n view = _ref.view,\n filter = _ref.filter,\n edgeTypeWL = _ref.edgeTypeWL,\n neighbourhoodScope = _ref.neighbourhoodScope;\n\n $tm.start('Assembling Graph');\n\n view = _ViewAbstraction2.default.exists(view) ? new _ViewAbstraction2.default(view) : null;\n var matches = _utils2.default.getMatches(filter || view && view.getNodeFilter('compiled'));\n var neighScope = parseInt(neighbourhoodScope || view && view.getConfig('neighbourhood_scope'));\n var typeWL = edgeTypeWL || view && view.getEdgeTypeFilter('whitelist');\n var toWL = _utils2.default.getArrayValuesAsHashmapKeys(matches);\n\n var graph = {\n edges: this.getEdgesForSet(matches, toWL, typeWL),\n nodes: this.selectNodesByReferences(matches, {\n view: view,\n outputType: 'hashmap'\n })\n };\n\n if (neighScope) {\n var neighbours = this.getNeighbours(matches, {\n steps: neighScope,\n view: view,\n typeWL: typeWL,\n addProperties: {\n group: 'tmap:neighbour'\n }\n });\n\n // add neighbours (nodes and edges) to graph\n Object.assign(graph.nodes, neighbours.nodes);\n Object.assign(graph.edges, neighbours.edges);\n\n if (view && view.isEnabled('show_inter_neighbour_edges')) {\n var nodeTRefs = this.getTiddlersByIds(neighbours.nodes);\n // this time we need a whitelist based on the nodeTRefs\n var _toWL = _utils2.default.getArrayValuesAsHashmapKeys(nodeTRefs);\n Object.assign(graph.edges, this.getEdgesForSet(nodeTRefs, _toWL));\n }\n }\n\n // this is pure maintainance!\n removeObsoleteViewData(graph.nodes, view);\n\n // add styles to nodes\n this.attachStylesToNodes(graph.nodes, view);\n\n $tm.stop('Assembling Graph');\n\n $tm.logger('debug', 'Assembled graph:', graph);\n\n return graph;\n }\n\n /**\n * Returns all edges stored in a given tiddler. Any edge stored in a\n * tiddler is orginally an outgoing edge. Depending on how the user\n * changes the arrow head (by manipulating the Visjs edge-type style),\n * the edge may change its orientation and become an incoming edge or\n * bi-directional. Therefore, the edges retrieved may be incoming,\n * outgoing or both!\n *\n * Returned edges may be of the following type:\n *\n * - Edges stored in the tiddler text (=links).\n * - Edges stored in fields denoted by magic edge-types.\n * - TiddlyMap edges stored in a json format\n *\n * @param {Tiddler} tiddler - A tiddler reference or object from\n * which to retrieve the edges.\n * @param {Hashmap<TiddlerReference, boolean>} [toWL]\n * A hashmap on which basis it is decided, whether to include\n * an edge that leads to a certain tiddler in the result or not.\n * In this case, all edges stored in the tiddler are treated as\n * outgoing and the arrow head is ignored. If not specified,\n * all edges are included.\n * @param {Hashmap<string, boolean>} [typeWL]\n * A hashmap on which basis it is decided, whether to include\n * an edge of a given type in the result or not. If not\n * specified, all edges are included.\n */\n\n }, {\n key: 'getEdges',\n value: function getEdges(tiddler, toWL, typeWL) {\n\n var tObj = _utils2.default.getTiddler(tiddler);\n\n if (!tObj || _utils2.default.isSystemOrDraft(tObj)) {\n return;\n }\n\n var allETy = this.indeces.allETy;\n\n var edges = _utils2.default.makeHashMap();\n var eTySubscribers = this.edgeTypeSubscriberRegistry.getAll();\n\n for (var i = 0, l = eTySubscribers.length; i < l; i++) {\n Object.assign(edges, eTySubscribers[i].loadEdges(tObj, toWL, typeWL));\n }\n\n for (var id in edges) {\n\n var edge = edges[id];\n\n // check exists for historical reasons...\n if (!edge.from || !edge.to) {\n continue;\n }\n\n var type = allETy[edge.type] || _EdgeType2.default.getInstance(edge.type);\n addStyleToEdge(edges[id], type);\n\n edges[id] = edge;\n }\n\n return edges;\n }\n\n /**\n * The method will return all outgoing edges for a subset of tiddlers.\n *\n * @param {Array<Tiddler>} tiddlers - The set of tiddlers to consider.\n * @param toWL\n * @param typeWL\n * @return {Hashmap<Id, Edge>} An edge collection.\n */\n\n }, {\n key: 'getEdgesForSet',\n value: function getEdgesForSet(tiddlers, toWL, typeWL) {\n\n var edges = _utils2.default.makeHashMap();\n for (var i = tiddlers.length; i--;) {\n Object.assign(edges, this.getEdges(tiddlers[i], toWL, typeWL));\n }\n\n return edges;\n }\n\n /**\n * Select all edges of a given type.\n *\n * @param {string|EdgeType} type - Either the edge type id (name) or an EdgeType object.\n */\n\n }, {\n key: 'selectEdgesByType',\n value: function selectEdgesByType(type) {\n\n var typeWL = _utils2.default.makeHashMap(_defineProperty({}, _EdgeType2.default.getInstance(type).id, true));\n\n return this.getEdgesForSet(this.getAllPotentialNodes(), null, typeWL);\n }\n\n /**\n *\n * @return {*}\n */\n\n }, {\n key: 'getAllPotentialNodes',\n value: function getAllPotentialNodes() {\n\n return _utils2.default.getMatches($tm.selector.allPotentialNodes);\n }\n }, {\n key: '_processEdgesWithType',\n\n\n /**\n * Deletes or renames all edges of a given type.\n *\n * @param {string|EdgeType} type - Either the edge type id (name) or an EdgeType object.\n * @param {('rename'|'delete')} [action='delete']\n * @param {string} [newName]\n */\n value: function _processEdgesWithType(type, _ref2) {\n var action = _ref2.action,\n newName = _ref2.newName;\n\n\n type = _EdgeType2.default.getInstance(type);\n\n $tm.logger('debug', 'Processing edges', type, action);\n\n // get edges\n var edges = this.selectEdgesByType(type);\n\n if (action === 'rename') {\n\n // clone type first to prevent auto-creation\n new _EdgeType2.default(newName, type).save();\n }\n\n for (var id in edges) {\n\n this._processEdge(edges[id], 'delete');\n\n if (action === 'rename') {\n edges[id].type = newName;\n this._processEdge(edges[id], 'insert');\n }\n }\n\n // finally remove the old type\n this.wiki.deleteTiddler(type.fullPath);\n }\n\n /**\n * Returns a set of nodes that corresponds to a set of tiddlers.\n *\n * @param {TiddlerCollection} tiddlers - A collection of tiddlers.\n * @param {Hashmap} [addProperties] - a hashmap\n * @param {CollectionTypeString} [outputType='dataset'] - The result type.\n *\n * @return {NodeCollection} A collection of a type specified in the options.\n */\n\n }, {\n key: 'selectNodesByReferences',\n value: function selectNodesByReferences(tiddlers) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n addProperties = _ref3.addProperties,\n outputType = _ref3.outputType;\n\n var result = _utils2.default.makeHashMap();\n var keys = Object.keys(tiddlers);\n\n for (var i = keys.length; i--;) {\n\n var node = this.makeNode(tiddlers[keys[i]], addProperties);\n if (node) {\n result[node.id] = node;\n }\n }\n\n return _utils2.default.convert(result, outputType);\n }\n\n /**\n * Retrieve nodes based on the a list of ids that corrspond to tiddlers\n * id fields.\n *\n * @param {Array.<Id>|Hashmap.<Id, *>|vis.DataSet} nodeIds - The ids of the tiddlers\n * that represent the nodes.\n * @param {Hashmap} [options] - See {@link Adapter#selectNodesByReferences}.\n * @return {NodeCollection} A collection of a type specified in the options.\n */\n\n }, {\n key: 'selectNodesByIds',\n value: function selectNodesByIds(nodeIds, options) {\n\n var tRefs = this.getTiddlersByIds(nodeIds);\n\n return this.selectNodesByReferences(tRefs, options);\n }\n\n /**\n * Select a single node by id.\n *\n * @param {Id} id - A node's id\n * @param {Hashmap} [options]\n * Except from the outputType option, all options\n * are inherited from {@link Adapter#selectNodesByIds}.\n * @return {Node|undefined} A node or nothing.\n */\n\n }, {\n key: 'selectNodeById',\n value: function selectNodeById(id, options) {\n\n options = Object.assign({}, options, { outputType: 'hashmap' });\n var result = this.selectNodesByIds([id], options);\n\n return result[id];\n }\n\n /**\n * Deletes a node type from the system.\n * @param {NodeType|string} type - the node type id or the actual NodeType\n */\n\n }, {\n key: 'removeNodeType',\n value: function removeNodeType(type) {\n\n type = _NodeType2.default.getInstance(type);\n this.wiki.deleteTiddler(type.fullPath);\n }\n\n /**\n * Gets a Node representation for a tiddler.\n *\n * @param {Tiddler} tiddler - the tiddler to represent as node\n * @param {Object} protoNode - default node properties\n *\n * @return {Node|void}\n */\n\n }, {\n key: 'makeNode',\n value: function makeNode(tiddler, protoNode) {\n\n var tObj = _utils2.default.getTiddler(tiddler);\n\n if (!tObj || _utils2.default.isSystemOrDraft(tObj)) return;\n\n // merge(!) so later node manipulations do not affect other nodes\n var node = _utils2.default.merge({}, protoNode);\n\n // note: assignId() will not assign an id if the tiddler already has one\n node.id = this.assignId(tObj);\n\n // backreference to tiddler;\n // https://github.com/felixhayashi/TW5-TiddlyMap/issues/304\n node.tRef = tObj.fields.title;\n\n // add label\n var label = tObj.fields[$tm.field.nodeLabel];\n node.label = (label && $tm.field.nodeLabel !== 'title' ? this.wiki.renderText('text/plain', 'text/vnd-tiddlywiki', label) : tObj.fields.title).replace('\\\\n', '\\n');\n\n return node;\n }\n\n /**\n * Return node styles that are inherited from system styles or node types.\n *\n * @param nodes\n * @return {Object<TiddlerReference, Object>}\n */\n\n }, {\n key: 'getInheritedNodeStyles',\n value: function getInheritedNodeStyles(nodes) {\n\n var src = this.getTiddlersByIds(nodes);\n var protoByTRef = {};\n var glNTy = this.indeces.glNTy;\n\n for (var i = glNTy.length; i--;) {\n var type = glNTy[i];\n\n var inheritors = [];\n if (type.id === 'tmap:neighbour') {\n // special case\n for (var id in nodes) {\n\n if (nodes[id].group === 'tmap:neighbour') {\n\n inheritors.push(this.getTiddlerById(id));\n }\n }\n } else {\n inheritors = type.getInheritors(src);\n }\n\n for (var j = inheritors.length; j--;) {\n var tRef = inheritors[j];\n var proto = protoByTRef[tRef] = protoByTRef[tRef] || {};\n proto.style = _utils2.default.merge(proto.style || {}, type.style);\n\n // ATTENTION: only override proto icons when the type provides\n // an icon since otherwise we might erase previously\n // inherited icons.\n if (type['fa-icon']) {\n proto['fa-icon'] = type['fa-icon'];\n } else if (type['tw-icon']) {\n proto['tw-icon'] = type['tw-icon'];\n }\n }\n }\n\n return protoByTRef;\n }\n\n /**\n * Adds styles to nodes.\n *\n * @param {Object<string, Node>} nodes\n * @param {ViewAbstraction|string} view\n */\n\n }, {\n key: 'attachStylesToNodes',\n value: function attachStylesToNodes(nodes, view) {\n\n view = _ViewAbstraction2.default.exists(view) ? new _ViewAbstraction2.default(view) : null;\n\n var inheritedStyles = this.getInheritedNodeStyles(nodes);\n var viewNodeData = view ? view.getNodeData() : _utils2.default.makeHashMap();\n var isStaticMode = view && !view.isEnabled('physics_mode');\n\n for (var id in nodes) {\n\n var tRef = this.getTiddlerById(id);\n var tObj = this.wiki.getTiddler(tRef);\n var fields = tObj.fields;\n var node = nodes[id];\n var icon = void 0;\n\n // == group styles ==\n\n var inheritedStyle = inheritedStyles[tRef];\n\n if (inheritedStyle) {\n\n _utils2.default.merge(node, inheritedStyle.style);\n icon = getIcon(inheritedStyle['fa-icon'], inheritedStyle['tw-icon']);\n }\n\n // == global node styles ==\n\n // background color\n if (fields.color) {\n node.color = fields.color;\n }\n\n // global node style from vis editor\n if (fields['tmap.style']) {\n _utils2.default.merge(node, _utils2.default.parseJSON(fields['tmap.style']));\n }\n\n icon = getIcon(fields['tmap.fa-icon'], fields['icon']) || icon;\n\n // == local node styles ==\n\n // local node style and positions\n\n var nodeData = viewNodeData[id];\n\n if (nodeData) {\n\n _utils2.default.merge(node, nodeData);\n if (isStaticMode) {\n // fix x if x-position is set; same for y\n node.fixed = {\n x: node.x != null,\n y: node.y != null\n };\n }\n\n icon = getIcon(nodeData['fa-icon'], nodeData['tw-icon']) || icon;\n }\n\n // == tweaks ==\n\n var isColorObject = node.color !== null && _typeof(node.color) === 'object';\n // color/border-color may be undefined\n var color = isColorObject ? node.color.background : node.color;\n\n node.color = {\n background: color,\n border: isColorObject ? node.color.border : undefined\n };\n\n // ATTENTION: this function needs to be called after color is assigned\n addNodeIcon(node, icon);\n\n // determine font color if not defined via a group- or node-style;\n // in case of global and local default styles, the user is responsible\n // him- or herself to adjust the font\n node.font = node.font || {};\n\n if (node.shape && !this.visShapesWithTextInside[node.shape]) {\n node.font.color = 'black'; // force a black color\n } else if (!node.font.color && color) {\n node.font.color = (0, _contrastcolour.run)(color, color, 'black', 'white');\n }\n\n if (node.shape === 'icon' && _typeof(node.icon) === 'object') {\n node.icon.color = color;\n }\n }\n\n if (view) {\n var _node = nodes[view.getConfig('central-topic')];\n if (_node) {\n _utils2.default.merge(_node, this.indeces.glNTyById['tmap:central-topic'].style);\n }\n }\n }\n\n /**\n * This function will remove all tiddlers from the wiki that correspond\n * to a node in the collection. Drafts are also removed. The default\n * storylist is updated eventually.\n * call deleteNode which does the following\n * 1. get id using IdByT\n * 2. remove id using adapter.deleteEdgesByTo(idByT[tRef])\n * 3. remove from all indeces\n *\n * @see: https://github.com/Jermolene/TiddlyWiki5/issues/1550\n *\n * @param {Node|string} node.\n */\n\n }, {\n key: 'deleteNode',\n value: function deleteNode(node) {\n\n if (!node) {\n return;\n }\n\n var id = (typeof node === 'undefined' ? 'undefined' : _typeof(node)) === 'object' ? node.id : node;\n var tRef = this.getTiddlerById(id);\n\n // delete tiddler and remove it from the river; this will\n // automatically remove the global node style and the outgoing edges\n\n if (tRef) {\n // checking for tRef is needed;\n // see: https://github.com/Jermolene/TiddlyWiki5/issues/1919\n _utils2.default.deleteTiddlers([tRef]);\n }\n\n // delete local node-data in views containing the node\n\n var viewRefs = _utils2.default.getMatches(env.selector.allViews);\n for (var i = viewRefs.length; i--;) {\n var view = new _ViewAbstraction2.default(viewRefs[i]);\n view.removeNode(id);\n }\n\n // remove obsolete connected edges\n\n var neighbours = this.getNeighbours([tRef]);\n this.deleteEdges(neighbours.edges);\n\n // -------------------------------------------\n // NEVER DELETE AN INDEX THAT ALREADY EXISTED!\n // -------------------------------------------\n // Some instances may have cached the index and get confused!\n // It does not do harm to leave indeces as is since we do not\n // iterate over them(!) and when a tiddler has the same title or\n // id as a deleted tiddler, which is highly unlikely, then it will\n // simply override the index, which is totally fine. The indeces\n // are refreshed on every boot anyway so it is not a big deal.\n //\n // THEREFORE:\n //\n // DO NOT DO delete this.tById[id];\n // DO NOT DO delete this.idByT[tRef];\n }\n\n /**\n * Delete all nodes from the system.\n *\n * @param {string[]} ids ids\n */\n\n }, {\n key: 'deleteNodes',\n value: function deleteNodes(ids) {\n\n for (var i = ids.length; i--;) {\n this.deleteNode(ids[i]);\n }\n }\n\n /**\n * Create a new tiddler that gets a non-existant title and is opened\n * for edit. If a view is registered, the fields of the tiddler match\n * the current view. If arguments network and position are specified,\n * the node is also inserted directly into the graph at the given\n * position.\n *\n * @TODO: Description is obsolete!\n *\n * @param {object} node A node object to be inserted\n * @param {ViewAbstraction|string} view - used to set positions and register the node to\n * @param {Tiddler} protoTiddler\n */\n\n }, {\n key: 'insertNode',\n value: function insertNode() {\n var node = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var view = arguments[1];\n var protoTiddler = arguments[2];\n\n\n // title might has changed after generateNewTitle()\n node.label = this.wiki.generateNewTitle(node.label || _utils2.default.getRandomLabel());\n\n // add to tiddler store\n var tObj = new $tw.Tiddler({ text: '' }, // https://github.com/Jermolene/TiddlyWiki5/issues/2025\n protoTiddler, {\n title: node.label, // force title\n 'tmap.id': null // force empty id (generated later)\n }, this.wiki.getModificationFields(), this.wiki.getCreationFields());\n\n this.wiki.addTiddler(tObj);\n\n node = this.makeNode(tObj, node);\n\n if (_ViewAbstraction2.default.exists(view)) {\n new _ViewAbstraction2.default(view).addNode(node);\n }\n\n return node;\n }\n\n /**\n * Retrieve tiddlers based on the a list of corresponding ids.\n *\n * @param {Array.<Id>|Hashmap.<Id, *>|vis.DataSet} nodeIds - The ids.\n * @return {Array<TiddlerReference>} The resulting tiddlers.\n */\n\n }, {\n key: 'getTiddlersByIds',\n value: function getTiddlersByIds(nodeIds) {\n\n // transform into a hashmap with all values being true\n if (Array.isArray(nodeIds)) {\n nodeIds = _utils2.default.getArrayValuesAsHashmapKeys(nodeIds);\n } else if (nodeIds instanceof _vis2.default.DataSet) {\n nodeIds = _utils2.default.getLookupTable(nodeIds, 'id'); // use id field as key\n }\n\n var result = [];\n for (var id in nodeIds) {\n var tRef = this.getTiddlerById(id);\n if (tRef) {\n result.push(tRef);\n }\n }\n\n return result;\n }\n }]);\n\n return Adapter;\n}();\n\n/**** Helper *******************************************************/\n\n/**\n * Returns the short symbol identifier (`` → `f206`).\n *\n * @param str FontAwesome id\n * @return {string}\n */\n\n\nvar getFAdigits = function getFAdigits(str) {\n return str.length === 4 ? str : str.substr(3, 4);\n};\n\n/**\n * Adds an icon to the specified node.\n *\n * @param {Node} node\n * @param {Object} icon\n */\nvar addNodeIcon = function addNodeIcon(node, icon) {\n\n if (!icon) {\n return;\n }\n\n // Font Awesome style\n\n if (icon.fa) {\n\n node.shape = 'icon';\n node.icon = {\n shape: 'icon',\n face: 'FontAwesome',\n color: node.color,\n code: String.fromCharCode('0x' + getFAdigits(icon.fa))\n };\n\n if (node.size) {\n node.icon.size = node.size;\n }\n\n return;\n }\n\n // TiddlyWiki stored icons\n\n if (icon.tw) {\n\n var imgTObj = _utils2.default.getTiddler(icon.tw);\n\n if (!imgTObj) {\n return;\n }\n\n if (imgTObj.fields['_canonical_uri']) {\n // image is a url address\n\n node.image = imgTObj.fields['_canonical_uri'];\n node.shape = 'image';\n } else if (imgTObj.fields.text) {\n\n node.image = _utils2.default.getDataUri(imgTObj);\n node.shape = 'image';\n }\n }\n};\n\n/**\n * Garbage collector for obsolete node data.\n *\n * @param {Object<string, Node>} nodes\n * @param {ViewAbstraction|string} view\n */\nvar removeObsoleteViewData = function removeObsoleteViewData(nodes, view) {\n\n if (!_ViewAbstraction2.default.exists(view) || !nodes) {\n return;\n }\n\n view = new _ViewAbstraction2.default(view);\n\n var data = view.getNodeData();\n\n var obsoleteDataItems = 0;\n for (var id in data) {\n if (nodes[id] === undefined && data[id] != null) {\n // we only set this to undefined as deletion would\n // slow down V8, however, this necessarily requires\n // a safeguard agains recursion: data[id] != null\n\n data[id] = undefined;\n obsoleteDataItems++;\n }\n }\n\n if (obsoleteDataItems) {\n $tm.logger('debug', '[Cleanup]', 'Removed obsolete node data:', view.getLabel(), obsoleteDataItems);\n view.saveNodeData(data);\n }\n};\n\n/**\n * Sets up an edge object that is ready to be consumed by vis.\n *\n * @param {Edge} edge\n * @param {EdgeType} type\n */\nvar addStyleToEdge = function addStyleToEdge(edge, type) {\n\n edge = Object.assign(edge, type.style);\n\n if (_utils2.default.isTrue(type['show-label'], true)) {\n edge.label = type.getLabel();\n }\n};\n\nvar getIcon = function getIcon(faIcon, twIcon) {\n return faIcon && { fa: faIcon } || twIcon && { tw: twIcon };\n};\n\n/*** Exports *******************************************************/\n\nexports.default = Adapter;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/Adapter.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/CallbackManager": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/CallbackManager",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/CallbackManager\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Makes it possible to register callbacks for tiddler changes.\n */\nvar CallbackManager = function () {\n function CallbackManager() {\n _classCallCheck(this, CallbackManager);\n\n this.callbacks = _utils2.default.makeHashMap();\n this.logger = $tm.logger;\n this.wiki = $tw.wiki;\n }\n\n /**\n * The callback mechanism allows to dynamically listen to tiddler\n * changes without hardcoding a change-check for a tiddler name\n * in the refresh function.\n *\n * @param {TiddlerReference} tRef - A tiddler whose change triggers\n * the callback.\n * @param {function} callback - A function that is called when the\n * tiddler has changed.\n * @param {boolean} [isDeleteOnCall=true] - True if to delete the\n * callback once it has been called, false otherwise.\n */\n\n\n _createClass(CallbackManager, [{\n key: 'add',\n value: function add(tRef, callback) {\n var isDeleteOnCall = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n\n this.logger('debug', 'A callback was registered for changes of \"' + tRef + '\"');\n this.callbacks[tRef] = {\n execute: callback,\n isDeleteOnCall: isDeleteOnCall\n };\n }\n }, {\n key: 'remove',\n\n\n /**\n * Removes the callback from the list of tiddler callbacks.\n */\n value: function remove(refOrRefList) {\n\n if (!refOrRefList) {\n return;\n }\n\n if (typeof refOrRefList === 'string') {\n refOrRefList = [refOrRefList];\n }\n\n for (var i = refOrRefList.length; i--;) {\n var tRef = refOrRefList[i];\n if (this.callbacks[tRef]) {\n this.logger('debug', 'Deleting callback for \"' + tRef + '\"');\n delete this.callbacks[tRef];\n }\n }\n }\n }, {\n key: 'refresh',\n\n\n /**\n * this method has to be implemented at the top of the refresh method.\n * It checks for changed tiddlers that have\n * registered callbacks. If `deleteOnCall` was specified during\n * registration of the callback, the callback will be deleted\n * automatically.\n */\n value: function refresh(changedTiddlers) {\n\n if (this.callbacks.length == 0) {\n return;\n }\n\n for (var tRef in changedTiddlers) {\n\n if (!this.callbacks[tRef]) {\n continue;\n }\n\n if (this.wiki.getTiddler(tRef)) {\n\n this.logger('debug', 'Executing a callback for: ' + tRef);\n this.callbacks[tRef].execute(tRef);\n\n // a continue prevents deleting the callback\n if (!this.callbacks.isDeleteOnCall) {\n continue;\n }\n }\n\n this.remove(tRef);\n }\n }\n }]);\n\n return CallbackManager;\n}();\n\n/*** Exports *******************************************************/\n\nexports.default = CallbackManager;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/CallbackManager.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/startup/caretaker": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/startup/caretaker",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startup = exports.synchronous = exports.before = exports.after = exports.platforms = exports.name = undefined;\n\nvar _rebuilders;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/startup/caretaker\ntype: application/javascript\nmodule-type: startup\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nvar _vis = require('$:/plugins/felixhayashi/tiddlymap/js/config/vis');\n\nvar _vis2 = _interopRequireDefault(_vis);\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _Fixer = require('$:/plugins/felixhayashi/tiddlymap/js/Fixer');\n\nvar _Fixer2 = _interopRequireDefault(_Fixer);\n\nvar _Adapter = require('$:/plugins/felixhayashi/tiddlymap/js/Adapter');\n\nvar _Adapter2 = _interopRequireDefault(_Adapter);\n\nvar _tracker = require('$:/plugins/felixhayashi/tiddlymap/js/services/tracker');\n\nvar _tracker2 = _interopRequireDefault(_tracker);\n\nvar _EdgeTypeSubscriberRegistry = require('$:/plugins/felixhayashi/tiddlymap/js/EdgeTypeSubscriberRegistry');\n\nvar _EdgeTypeSubscriberRegistry2 = _interopRequireDefault(_EdgeTypeSubscriberRegistry);\n\nvar _DialogManager = require('$:/plugins/felixhayashi/tiddlymap/js/DialogManager');\n\nvar _DialogManager2 = _interopRequireDefault(_DialogManager);\n\nvar _CallbackManager = require('$:/plugins/felixhayashi/tiddlymap/js/CallbackManager');\n\nvar _CallbackManager2 = _interopRequireDefault(_CallbackManager);\n\nvar _ViewAbstraction = require('$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction');\n\nvar _ViewAbstraction2 = _interopRequireDefault(_ViewAbstraction);\n\nvar _EdgeType = require('$:/plugins/felixhayashi/tiddlymap/js/EdgeType');\n\nvar _EdgeType2 = _interopRequireDefault(_EdgeType);\n\nvar _NodeType = require('$:/plugins/felixhayashi/tiddlymap/js/NodeType');\n\nvar _NodeType2 = _interopRequireDefault(_NodeType);\n\nvar _vis3 = require('$:/plugins/felixhayashi/vis/vis.js');\n\nvar _vis4 = _interopRequireDefault(_vis3);\n\nvar _environment = require('$:/plugins/felixhayashi/tiddlymap/js/lib/environment');\n\nvar env = _interopRequireWildcard(_environment);\n\nvar _URL = require('$:/plugins/felixhayashi/tiddlymap/js/URL');\n\nvar _URL2 = _interopRequireDefault(_URL);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*** Code **********************************************************/\n\n/**\n * This module is responsible for registering a global namespace\n * under $tw and loading (and refreshing) the configuration and services.\n *\n * Attention: Careful with the order of the function calls in this\n * functions body!\n *\n */\nvar init = function init() {\n\n window.$tm = _extends({}, env, { utils: _utils2.default, url: new _URL2.default(window.location.href) });\n\n // cleanup previous session\n cleanup();\n\n registerPublicClasses($tm);\n\n // build and integrate global options\n updateGlobals($tm);\n\n // register meta file (if not done yet)\n createMetaFile($tm.logger);\n\n // create indeces\n var indeces = attachIndeces($tm);\n\n // create services\n var services = getInitializedServices(indeces);\n Object.assign($tm, services);\n\n // load defaults\n loadDefaultView($tm.config.sys.defaultView);\n\n // Run the fixer to update older wikis\n services.fixer.fix();\n\n // all graphs need to register here. @see routineWalk()\n $tm.registry = [];\n setInterval(routineCheck, 5000);\n\n // AT THE VERY END: register change listener with the callback manager\n registerChangeListener($tm.callbackManager);\n\n // register DOM listeners\n registerMousemoveListener();\n registerClickListener();\n\n // check for fullscreen directives\n if ($tm.url.query['tmap-enlarged']) {\n prepareFullscreenStart($tm.url);\n }\n\n // issue notification\n $tm.logger('warn', 'TiddlyMap\\'s caretaker successfully started');\n};\n\n/**\n * Injects dependencies and registers services\n *\n * @param indeces\n * @return Object\n */\nvar getInitializedServices = function getInitializedServices(indeces) {\n\n var tracker = new _tracker2.default(fixer);\n\n // inject modules\n var handler = $tw.modules.applyMethods('tmap.edgetypehandler');\n var edgeTypeSubscriberRegistry = new _EdgeTypeSubscriberRegistry2.default(handler, indeces.allETy, tracker);\n\n // attach the adapter object to the tiddlymap namespace\n var adapter = new _Adapter2.default(tracker, edgeTypeSubscriberRegistry);\n\n var callbackManager = new _CallbackManager2.default();\n var dialogManager = new _DialogManager2.default(callbackManager);\n\n var fixer = new _Fixer2.default(adapter, $tm.logger, indeces.glNTy);\n\n return {\n edgeTypeSubscriberRegistry: edgeTypeSubscriberRegistry,\n tracker: tracker,\n adapter: adapter,\n callbackManager: callbackManager,\n dialogManager: dialogManager,\n fixer: fixer\n };\n};\n\n/**\n * make classes available for console users\n */\nvar registerPublicClasses = function registerPublicClasses(parent) {\n parent.keycharm = _vis4.default.keycharm;\n parent.NodeType = _NodeType2.default;\n parent.EdgeType = _EdgeType2.default;\n parent.ViewAbstraction = _ViewAbstraction2.default;\n};\n\n/**\n * This function will append the global options to the tree. In case\n * this function is called again, only the option leafs are rebuild\n * so a process may safely store a reference to a branch of the option\n * tree as the reference doesn't change.\n *\n * ATTENTION: For the path options, no trailing or double slashes!\n * This is NOT unix where paths are normalized (// is not rewritten to /).\n *\n * @see\n * - [TW5] Is there a designated place for TW plugins to store stuff in the dom?\n * https://groups.google.com/forum/#!topic/tiddlywikidev/MZZ37XiVcvY\n * @param {object} parent The root where to insert the options into\n */\nvar attachOptions = function attachOptions(parent) {\n\n var p = parent;\n\n // default configurations mixed with user config\n if (!p.config) p.config = _utils2.default.makeHashMap();\n\n // Never modify the imported config objects; instead, merge them\n // into a new object\n\n // attention! it is a tw-data-tiddler!\n p.config.sys = _utils2.default.merge(p.config.sys, _utils2.default.unflatten($tw.wiki.getTiddlerData(env.ref.sysUserConf)));\n\n // CAREFUL: Never merge directly into the default vis config object\n p.config.vis = _utils2.default.merge({}, _vis2.default, _utils2.default.parseFieldData(env.ref.visUserConf));\n\n // a shortcut for fields property\n if (!p.field) p.field = _utils2.default.makeHashMap();\n $tw.utils.extend(p.field, p.config.sys.field);\n};\n\n/**\n * This function will cache/index some tiddler properties as javascript\n * objects for faster access.\n */\nvar attachIndeces = function attachIndeces(parent) {\n\n $tm.start('Attaching Indeces');\n\n parent.indeces = parent.indeces || {};\n\n updateNodeTypesIndeces(parent.indeces);\n updateEdgeTypesIndeces(parent.indeces);\n\n $tm.stop('Attaching Indeces');\n\n return parent.indeces;\n};\n\n/**\n * For faster access to node-type styles, we store all node-type\n * objects as indeces in a table.\n *\n * Types without a filter are not indexed since they are either\n * special types that TiddlyMap manually assignes (e.g. tmap:neighbour,\n * or tmap:selected).\n *\n * Indeces added to the indeces chain:\n * 1. glNTy – all global node types\n *\n * @param {Object} [parent] - The global indeces object indeces.\n * If not stated, $tm.indeces is used.\n * @param {Array<TiddlerReference>} [allTiddlers] - The tiddlers to\n * use as basis for this index. If not stated, all tiddlers in\n * the wiki are used.\n */\nvar updateNodeTypesIndeces = function updateNodeTypesIndeces(parent) {\n\n parent = parent || $tm.indeces;\n\n var typePath = $tm.path.nodeTypes;\n var glNTy = parent.glNTy = [];\n var glNTyById = parent.glNTyById = _utils2.default.makeHashMap();\n\n $tw.wiki.eachTiddlerPlusShadows(function (tObj, tRef) {\n if (_utils2.default.startsWith(tRef, typePath)) {\n var type = _NodeType2.default.getInstance(tRef);\n glNTyById[type.id] = type;\n glNTy.push(type);\n }\n });\n\n glNTy.sort(function (a, b) {\n return a.priority - b.priority;\n });\n};\n\nvar updateEdgeTypesIndeces = function updateEdgeTypesIndeces(parent) {\n\n parent = parent || $tm.indeces;\n\n var typePath = $tm.path.edgeTypes;\n var allETy = parent.allETy = _utils2.default.makeHashMap();\n\n $tw.wiki.eachTiddlerPlusShadows(function (tObj, tRef) {\n\n if (_utils2.default.startsWith(tRef, typePath)) {\n\n var et = _EdgeType2.default.getInstance(tRef);\n allETy[et.id] = et;\n }\n });\n\n if ($tm.edgeTypeSubscriberRegistry) {\n $tm.edgeTypeSubscriberRegistry.updateIndex(allETy);\n }\n};\n\n/**\n * This function attaches all the top level functions to the\n * tiddlymap namespace.\n *\n * This will add the\n * 1. global logger method,\n * 2. the notify method\n * 3. the stopwatch methods `start` and `stop`.\n *\n * @param {Hashmap} parent - The parent object to attach the options to.\n */\nvar attachFunctions = function attachFunctions(parent) {\n\n var fn = parent;\n var nirvana = function nirvana() {/* /dev/null */};\n\n if (_utils2.default.isTrue($tm.config.sys.debug, false) && console) {\n\n /**\n * A logging mechanism that uses the first argument as type and\n * passes all consequent arguments as console arguments. The\n * reason for this functions existence is to be able to switch\n * off the logging without redirecting every single console function\n * such as log, debug, warn etc. Plus, we have more control over\n * the logging.\n *\n * @see http://stackoverflow.com/questions/5538972/console-log-apply-not-working-in-ie9\n * @see http://stackoverflow.com/questions/9521921/why-does-console-log-apply-throw-an-illegal-invocation-error\n *\n * @param {string} type - The type of the message (debug, info, warning…)\n * which is exactly the same as in `console[type]`.\n * @param {...*} message - An infinite number of arguments to be printed\n * (just like console).\n */\n fn.logger = function () /* type, [messages,] messages */{\n if (arguments.length < 2) return;\n var args = Array.prototype.slice.call(arguments);\n var arg1 = args.shift(args);\n var type = console.hasOwnProperty(arg1) ? arg1 : 'debug';\n console[type].apply(console, args);\n };\n\n fn.start = function (timerName) {\n console.time('[timer] ' + timerName);\n };\n\n fn.stop = function (timerName) {\n console.timeEnd('[timer] ' + timerName);\n };\n } else {\n\n fn.logger = fn.start = fn.stop = nirvana;\n }\n\n fn.notify = _utils2.default.isTrue($tm.config.sys.notifications) ? _utils2.default.notify : nirvana;\n};\n\n/**\n * This periodic check is needed to trigger a cleanup if a graph is\n * removed since a graph itself cannot react to its destruction.\n * This includes removing listeners that were not attached to the\n * local container or calling the vis destructor.\n *\n * @todo Specify which functions are required for widgets that register\n * themselves in the registry.\n */\nvar routineCheck = function routineCheck() {\n\n for (var i = $tm.registry.length; i--;) {\n var widget = $tm.registry[i];\n\n if (!widget.destruct || !widget.isZombieWidget) return; // no duck!\n\n if (widget.isZombieWidget()) {\n // removed!\n $tm.logger('warn', 'a widget will be removed');\n $tm.registry.splice(i, 1);\n widget.destruct();\n }\n }\n};\n\n/**\n * Every widget that has registered itself in the registry\n * will receive the `updates` object. The `updates` object is a more\n * advanced\n *\n * @param {Updates} updates\n */\nvar dispatchUpdates = function dispatchUpdates(updates) {\n\n var registry = $tm.registry;\n for (var i = registry.length; i--;) {\n\n var widget = registry[i];\n\n if (widget.update && widget.isZombieWidget && !widget.isZombieWidget()) {\n widget.update(updates);\n }\n }\n};\n\n/**\n * We need to do this check as TiddlyWiki does not allow us to hook into the\n * clone process to find out whether a node was cloned.\n *\n * @param tObj\n */\nvar checkForClone = function checkForClone(tObj) {\n\n var tRefs = _utils2.default.getDublicates(tObj);\n\n if (!tRefs.length) {\n return;\n }\n\n // remove any defined edges\n _utils2.default.setField(tObj, 'tmap.edges', undefined);\n\n // force override id\n $tm.tracker.assignId(tObj, true);\n\n // inform the user about what we did\n $tm.dialogManager.open('dublicateIdInfo', {\n param: {\n changedTiddler: tObj.fields.title,\n filter: _utils2.default.joinAndWrap(tRefs, '[[', ']]'),\n id: _utils2.default.getId(tObj)\n }\n });\n};\n\n/**\n * Builds and registers globals and the functions that depend on them.\n */\nvar updateGlobals = function updateGlobals(parent) {\n\n attachOptions($tm);\n attachFunctions($tm);\n\n // attention: logger() cannot be called before functions are rebuild\n $tm.logger('warn', 'Rebuilt globals');\n};\n\nvar lastCurrentTiddler = null;\nvar updateLiveViewTrigger = function updateLiveViewTrigger(changedTiddlers) {\n\n if (changedTiddlers['$:/HistoryList']) {\n var tRef = _utils2.default.getField('$:/HistoryList', 'current-tiddler');\n } else if (changedTiddlers['$:/temp/focussedTiddler']) {\n var tRef = _utils2.default.getField('$:/temp/focussedTiddler', 'text');\n }\n\n if (tRef != null && lastCurrentTiddler !== tRef) {\n lastCurrentTiddler = tRef;\n _utils2.default.setField('$:/temp/tmap/currentTiddler', 'text', tRef);\n }\n};\n\n/**\n * Only for debugging\n */\nvar printChanges = function printChanges(changedTiddlers, loopCount) {\n\n if (!_utils2.default.isTrue($tm.config.sys.debug, false)) return;\n\n $tm.logger('warn', '=== Refresh ' + loopCount + ' ===');\n\n for (var tRef in changedTiddlers) {\n\n var c = changedTiddlers[tRef].deleted ? '[Deleted]' : '[Modified]';\n\n $tm.logger('warn', c, tRef, $tw.wiki.getTiddler(tRef));\n }\n};\n\n/**\n * Saves the last mousemove event under $tm.mouse\n */\nvar registerMousemoveListener = function registerMousemoveListener() {\n\n $tm.mouse = {};\n\n var fn = function fn(evt) {\n $tm.mouse = evt;\n };\n window.addEventListener('mousemove', fn, false);\n};\n\n/**\n * @TODO: suggest this to Jeremy for TW popup handling\n */\nvar registerClickListener = function registerClickListener() {\n\n var tempPopups = $tm.path.tempPopups;\n window.addEventListener('click', function (evt) {\n\n var popupStates = _utils2.default.getTiddlersByPrefix(tempPopups);\n\n for (var i = popupStates.length; i--;) {\n if (_utils2.default.getText(popupStates[i])) break;\n }\n\n if (i === -1) return;\n\n if (!$tw.utils.hasClass(evt.target, 'tc-drop-down') && !_utils2.default.getAncestorWithClass(evt.target, 'tc-drop-down')) {\n // = clicked on an element that isn't a dropdown or inside one\n for (var i = popupStates.length; i--;) {\n _utils2.default.setText(popupStates[i], '');\n }\n }\n }, false);\n};\n\n/**\n * Registers a change listener that will dispatch\n * @param callbackManager\n */\nvar registerChangeListener = function registerChangeListener(callbackManager) {\n\n var loopCount = 0;\n\n $tw.wiki.addEventListener('change', function (changedTiddlers) {\n\n $tm.start('Caretaker handling changes');\n\n printChanges(changedTiddlers, loopCount++);\n callbackManager.refresh(changedTiddlers);\n\n var updates = { changedTiddlers: {} };\n\n for (var tRef in changedTiddlers) {\n\n var tObj = _utils2.default.getTiddler(tRef);\n\n if (tObj && tObj.isDraft()) {\n continue;\n }\n\n var isHandled = handleTiddlerChange(tRef, tObj, updates);\n\n if (isHandled) {\n updates.changedTiddlers[tRef] = changedTiddlers[tRef];\n }\n }\n\n dispatchUpdates(updates);\n\n // NOTE: changes will affect the next refresh cycle\n updateLiveViewTrigger(changedTiddlers);\n\n $tm.stop('Caretaker handling changes');\n });\n};\n\n/**\n * Mapping of paths and callbacks that should be invoked if tiddlers\n * within theses paths change.\n */\nvar rebuilders = (_rebuilders = {}, _defineProperty(_rebuilders, env.path.options, updateGlobals), _defineProperty(_rebuilders, env.path.nodeTypes, updateNodeTypesIndeces), _defineProperty(_rebuilders, env.path.edgeTypes, updateEdgeTypesIndeces), _rebuilders);\n\n/**\n * This function will deal with tiddler changes and will log changes\n * to the provided `updates` object.\n *\n * @param {TiddlerReference} tRef\n * @param {$tw.Tiddler} tObj\n * @param {Updates} updates\n */\nvar handleTiddlerChange = function handleTiddlerChange(tRef, tObj, updates) {\n\n if ($tw.wiki.isSystemTiddler(tRef)) {\n\n for (var path in rebuilders) {\n if (_utils2.default.startsWith(tRef, path) && !updates[path]) {\n $tm.logger('warn', '[System change]', path);\n rebuilders[path]();\n updates[path] = true;\n }\n }\n } else if (tObj) {\n // created or modified\n\n if (tObj.fields.text === undefined) {\n // sic; '' is ok\n // to make sure that the tiddler's body is fully loaded\n // we postpone the handling of the tiddler\n // see https://github.com/felixhayashi/TW5-TiddlyMap/issues/222#issuecomment-268978764\n $tw.wiki.dispatchEvent('lazyLoad', tRef);\n\n return false;\n }\n\n checkForClone(tObj);\n\n // call assignId IN ANY CASE to make sure the index\n // stays intact, also after a renaming operation\n $tm.tracker.assignId(tObj);\n } else {\n // deleted or renamed\n\n var id = $tm.tracker.getIdByTiddler(tRef);\n\n if (!id) {\n // ignore tiddler without id\n return false;\n }\n\n var tRefWithId = _utils2.default.getTiddlerWithField('tmap.id', id);\n\n if (tRefWithId) {\n // only renamed\n\n $tm.logger('warn', '[Renamed]', tRef, 'into', tRefWithId);\n } else {\n // removed\n\n // remove node; any edges pointing in/out; update indeces\n // CAREFUL with recursion here!\n $tm.adapter.deleteNode(id);\n }\n }\n\n return true;\n};\n\n/**\n * Remove temp files from previous session.\n */\nvar cleanup = function cleanup() {\n\n _utils2.default.deleteByPrefix('$:/temp/felixhayashi');\n _utils2.default.deleteByPrefix('$:/temp/tiddlymap');\n _utils2.default.deleteByPrefix('$:/temp/tmap');\n};\n\n/**\n * Register the view that should be displayed at startup.\n */\nvar loadDefaultView = function loadDefaultView(defaultView) {\n\n if (defaultView) {\n _utils2.default.setText(env.ref.defaultViewHolder, $tm.config.sys.defaultView);\n }\n};\n\n/**\n * Init the wiki so we can start the main editor with the specified\n * view in fullscreen mode.\n *\n * @param {ViewAbstraction|string} view\n */\nvar prepareFullscreenStart = function prepareFullscreenStart(view) {\n var _env$ref = env.ref,\n mainEditor = _env$ref.mainEditor,\n defaultViewHolder = _env$ref.defaultViewHolder;\n\n\n _utils2.default.setSidebarTab(mainEditor);\n\n if (_ViewAbstraction2.default.exists(view)) {\n view = new _ViewAbstraction2.default(view);\n _utils2.default.setField(defaultViewHolder, 'text', view.getLabel());\n }\n};\n\n/**\n * The meta file keeps track of installation data.\n */\nvar createMetaFile = function createMetaFile(logger) {\n\n if (_utils2.default.tiddlerExists(env.ref.sysMeta)) {\n return;\n }\n\n logger('warn', 'Creating meta file');\n\n var plugin = $tw.wiki.getTiddler(env.path.pluginRoot);\n\n $tw.wiki.setTiddlerData(env.ref.sysMeta, {\n // the version originally installed\n originalVersion: plugin.fields.version,\n // the data structure in use corresponds to version x\n // if the structure is obsolete, it will be automatically\n // fixed by the fixer module.\n dataStructureState: '0.6.9',\n // whether or not to display a welcome message\n showWelcomeMessage: true\n });\n};\n\n/*** Exports *******************************************************/\n\nvar name = exports.name = 'tmap.caretaker';\nvar platforms = exports.platforms = ['browser'];\nvar after = exports.after = ['startup'];\nvar before = exports.before = ['rootwidget'];\nvar synchronous = exports.synchronous = true;\nvar startup = exports.startup = init;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/Caretaker.js.map\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/plugins/felixhayashi/tiddlymap/js/DialogManager": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/DialogManager",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/DialogManager\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _CallbackManager = require('$:/plugins/felixhayashi/tiddlymap/js/CallbackManager');\n\nvar _CallbackManager2 = _interopRequireDefault(_CallbackManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * The DialogManager is responsible for preparing, displaying and\n * finalizing all the dialogs.\n */\nvar DialogManager = function () {\n\n /**\n * @param {CallbackManager} callbackManager - A callback manager that\n * is informed about changed tiddlers and keeps track of the\n * various tiddlers produced during the dialog process.\n * @param {Object} [context] - An optional *this*-reference to bind the\n * callback of each called dialog to. Otherwise, the callback of\n * each dialog has to be bound manually to the callback if required.\n */\n function DialogManager(callbackManager, context) {\n _classCallCheck(this, DialogManager);\n\n // create callback registry\n this.callbackManager = callbackManager;\n this.context = context;\n }\n\n /**\n * This function opens a dialog based on a skeleton and some fields and eventually\n * calls a callback once the dialog is closed. The callback contains an indicator\n * whether the dialog subject was confirmed or the operation cancelled. In any\n * case the output tiddler is passed to the callback. Each dialog may write its\n * changes to this tiddler in order to store the dialog result and make it available\n * to the callback.\n *\n * How does it work?\n *\n * The output of the dialog process is stored in a temporary tiddler that is only known\n * to the current instance of the dialog. This way it is ensured that only the dialog process\n * that created the temporary tiddler will retrieve the result. Now we are able to\n * provide unambigous and unique correspondance to dialog callbacks.\n * Any dialog output is stored in a unique output-tiddler. Once there is a result,\n * a new result tiddler is created with indicators how to interpret the output.\n * The result tiddler can be understood as exit code that is independent of the output.\n * It is the result tiddler that triggers the dialog callback that was registered before.\n * the output is then read immediately from the output-tiddler.\n *\n * @param {string} templateId - The dialog id which is the basename of\n * the template title.\n * @param {Hashmap} [param] - All properties (except those with special meanings)\n * of param will be accessible as variables in the modal\n * @param {string} [param.subtitle] -\n * @param {string} [param.cancelButtonLabel] - The label of the cancel button.\n * @param {string} [param.confirmButtonLabel] - The label of the confirm button.\n * @param {function} [callback] - A function with the signature\n * function(isConfirmed, outputTObj). `outputTObj` contains data\n * produced by the dialog (can be undefined even if confirmed!).\n * Be careful: the tiddler that outputTObj represents is deleted immediately.\n * @return {$tw.Tiddler} The dialog tddler object with all its fields.\n */\n\n\n _createClass(DialogManager, [{\n key: 'open',\n value: function open(templateId) {\n var param = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var callback = arguments[2];\n\n\n if (_utils2.default.isTrue($tm.config.sys.suppressedDialogs[templateId], false)) {\n $tm.logger('warning', 'Suppressed dialog', templateId);\n return;\n }\n\n $tm.logger('debug', 'Dialog param object', param);\n\n if (typeof callback === 'function' && this.context) {\n callback = callback.bind(this.context);\n }\n\n // create a temporary tiddler reference for the dialog\n var dialogTRef = $tm.path.tempRoot + '/dialog-' + _utils2.default.genUUID();\n\n // get the dialog template\n var skeleton = _utils2.default.getTiddler($tm.path.dialogs + '/' + templateId);\n\n // fields used to handle the dialog process\n var dialog = {\n title: dialogTRef,\n buttons: skeleton.fields['buttons'] || 'ok_cancel',\n classes: 'tmap-modal-content ' + skeleton.fields['classes'],\n output: dialogTRef + '/output',\n result: dialogTRef + '/result',\n temp: dialogTRef + '/temp',\n template: skeleton.fields.title,\n templateId: templateId,\n currentTiddler: dialogTRef + '/output',\n text: _utils2.default.getText($tm.path.dialogs)\n };\n\n _utils2.default.touch(dialog.output);\n\n if (param.dialog) {\n\n if (param.dialog.preselects) {\n\n // register preselects\n $tw.wiki.addTiddler(new $tw.Tiddler({ title: dialog.output }, _utils2.default.flatten(param.dialog.preselects)));\n\n // remove preselects from param object\n delete param.dialog.preselects;\n }\n\n // extend the dialog object with parameters provided by the user\n _utils2.default.merge(dialog, param.dialog);\n }\n\n // force the footer to be set to the wrapper\n // the footer wrapper will determine the footer from the\n // buttons field/variable\n dialog.footer = _utils2.default.getText($tm.path.footers);\n\n // flatten dialog and param object\n dialog = _utils2.default.flatten(dialog);\n param = _utils2.default.flatten(param);\n\n var fn = function fn(tRef) {\n\n DialogManager.getElement('hidden-close-button').click();\n\n var triggerTObj = $tw.wiki.getTiddler(tRef);\n var isConfirmed = triggerTObj.fields.text;\n\n var outputTObj = null;\n if (isConfirmed) {\n outputTObj = $tw.wiki.getTiddler(dialog.output);\n } else {\n $tm.notify('operation cancelled');\n }\n\n if (typeof callback === 'function') {\n callback(isConfirmed, outputTObj);\n }\n\n // close and remove all tiddlers used by the dialog\n _utils2.default.deleteByPrefix(dialogTRef);\n };\n\n // add trigger\n this.callbackManager.add(dialog.result, fn, true);\n\n // create dialog\n var dialogTiddler = new $tw.Tiddler(skeleton, param, dialog);\n $tw.wiki.addTiddler(dialogTiddler);\n\n $tm.logger('debug', 'Opening dialog', dialogTiddler);\n\n $tw.rootWidget.dispatchEvent({\n type: 'tm-modal',\n param: dialogTiddler.fields.title,\n paramObject: dialogTiddler.fields\n });\n\n DialogManager.addKeyBindings();\n\n return dialogTiddler;\n }\n }], [{\n key: 'getElement',\n value: function getElement(name) {\n\n return _utils2.default.getFirstElementByClassName('tmap-' + name);\n }\n\n /**\n * This method will search for form elements that have the class\n * `tmap-trigger-field` set, which means that TiddlyMap shall\n * perform a button press when a key combo occurs while the field\n * has focus. To know which button to press on what key event,\n * it looks for classes of the form: tmap-triggers-BUTTONNAME-on-KEYCOMBO.\n */\n\n }, {\n key: 'addKeyBindings',\n value: function addKeyBindings() {\n\n var keys = $tm.keycharm({\n container: _utils2.default.getFirstElementByClassName('tc-modal')\n });\n\n var re = /tmap-triggers-(.+?)-on-(.+?)(?:\\s|$)/;\n var triggers = document.getElementsByClassName('tmap-trigger-field');\n\n var _loop = function _loop(i) {\n var classNames = triggers[i].className.split(' ');\n\n var _loop2 = function _loop2(j) {\n var matches = classNames[j].match(re);\n if (!matches) {\n // don't care\n return 'continue';\n }\n var buttonName = matches[1];\n var key = matches[2];\n var buttonElement = DialogManager.getElement(buttonName);\n if (!buttonElement) {\n return 'continue';\n }\n keys.bind(key, function () {\n if (document.getElementsByClassName(classNames[j]).length) {\n // only click button if trigger is active (i.e. still in focus)\n // see https://github.com/felixhayashi/TW5-TiddlyMap/issues/280\n buttonElement.click();\n }\n });\n };\n\n for (var j = classNames.length; j--;) {\n var _ret2 = _loop2(j);\n\n if (_ret2 === 'continue') continue;\n }\n };\n\n for (var i = triggers.length; i--;) {\n _loop(i);\n }\n }\n }]);\n\n return DialogManager;\n}();\n\n/*** Exports *******************************************************/\n\nexports.default = DialogManager;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/DialogManager.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/Fixer": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/Fixer",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/Fixer\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _ViewAbstraction = require('$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction');\n\nvar _ViewAbstraction2 = _interopRequireDefault(_ViewAbstraction);\n\nvar _EdgeType = require('$:/plugins/felixhayashi/tiddlymap/js/EdgeType');\n\nvar _EdgeType2 = _interopRequireDefault(_EdgeType);\n\nvar _NodeType = require('$:/plugins/felixhayashi/tiddlymap/js/NodeType');\n\nvar _NodeType2 = _interopRequireDefault(_NodeType);\n\nvar _environment = require('$:/plugins/felixhayashi/tiddlymap/js/lib/environment');\n\nvar env = _interopRequireWildcard(_environment);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*** Code **********************************************************/\n\nvar Fixer = function () {\n\n /**\n * @param {Adapter} adapter\n * @param {Object} logger\n * @param {Object} glNTy\n */\n function Fixer(adapter, logger, glNTy) {\n _classCallCheck(this, Fixer);\n\n this.adapter = adapter;\n this.logger = logger;\n this.wiki = $tw.wiki;\n this.glNTy = glNTy;\n }\n\n _createClass(Fixer, [{\n key: 'moveEdges',\n value: function moveEdges(path, view) {\n\n var matches = _utils2.default.getTiddlersByPrefix(path);\n for (var i = 0; i < matches.length; i++) {\n\n // create edge type\n var type = _utils2.default.getBasename(matches[i]);\n\n if (type === '__noname__') {\n type = 'tmap:unknown';\n }\n\n type = _EdgeType2.default.getInstance(type);\n\n if (!type.exists()) {\n type.save();\n }\n\n // move edges\n var edges = this.wiki.getTiddlerData(matches[i]);\n for (var j = 0; j < edges.length; j++) {\n // prefix formerly private edges with view name as namespace\n edges[j].type = (view ? view + ':' : '') + type.id;\n this.adapter.insertEdge(edges[j]);\n }\n\n // finally remove the store\n this.wiki.deleteTiddler(matches[i]);\n }\n }\n }, {\n key: 'executeUpgrade',\n value: function executeUpgrade(toVersion, curVersion, upgrade) {\n\n if (!_utils2.default.isLeftVersionGreater(toVersion, curVersion)) {\n // = current data structure version is newer than version we want to upgrade to.\n return;\n }\n\n // issue debug message\n this.logger('debug', 'Upgrading data structure to ' + toVersion);\n // execute fix\n var msg = upgrade();\n // update meta\n _utils2.default.setEntry(env.ref.sysMeta, 'dataStructureState', toVersion);\n\n return msg;\n }\n }, {\n key: 'fixId',\n\n\n /**\n * Special fix that is not invoked along with the other fixes but\n * when creating the index (see caretaker code).\n *\n * Changes:\n * 1. The node id field is moved to tmap.id if **original version**\n * is below v0.9.2.\n */\n value: function fixId() {\n\n var meta = this.wiki.getTiddlerData(env.ref.sysMeta, {});\n\n this.executeUpgrade('0.9.2', meta.dataStructureState, function () {\n\n if (_utils2.default.isLeftVersionGreater('0.9.2', meta.originalVersion)) {\n // path of the user conf at least in 0.9.2\n var userConf = '$:/plugins/felixhayashi/tiddlymap/config/sys/user';\n var nodeIdField = _utils2.default.getEntry(userConf, 'field.nodeId', 'tmap.id');\n _utils2.default.moveFieldValues(nodeIdField, 'tmap.id', true, false);\n }\n });\n }\n }, {\n key: 'fix',\n value: function fix() {\n var _this = this;\n\n var meta = this.wiki.getTiddlerData(env.ref.sysMeta, {});\n\n this.logger('debug', 'Fixer is started');\n this.logger('debug', 'Data-structure currently in use: ', meta.dataStructureState);\n\n /**\n * Changes:\n * 1. Edges are stored in tiddlers instead of type based edge stores\n * 2. No more private views\n */\n this.executeUpgrade('0.7.0', meta.dataStructureState, function () {\n\n // move edges that were formerly \"global\"\n _this.moveEdges('$:/plugins/felixhayashi/tiddlymap/graph/edges', null);\n\n // move edges that were formerly bound to view (\"private\")\n var filter = env.selector.allViews;\n var viewRefs = _utils2.default.getMatches(filter);\n for (var i = 0; i < viewRefs.length; i++) {\n var view = new _ViewAbstraction2.default(viewRefs[i]);\n _this.moveEdges(view.getRoot() + '/graph/edges', view);\n }\n });\n\n /**\n * Changes:\n * 1. Changes to the live view filter and refresh trigger field\n */\n this.executeUpgrade('0.7.32', meta.dataStructureState, function () {\n\n if (!_ViewAbstraction2.default.exists('Live View')) {\n\n return;\n }\n\n var liveView = new _ViewAbstraction2.default('Live View');\n\n // Only listen to the current tiddler of the history list\n liveView.setNodeFilter('[field:title{$:/temp/tmap/currentTiddler}]', true);\n\n liveView.setConfig({\n 'refresh-trigger': null, // delete the field (renamed)\n 'refresh-triggers': $tw.utils.stringifyList(['$:/temp/tmap/currentTiddler'])\n });\n });\n\n /**\n * Changes:\n * 1. Group styles for matches and neighbours are now modulized\n * and stored as node-types.\n * 2. vis user configuration is restored unflattened!\n * The user only interacts through the GUI.\n * 3. If the node id field was \"id\" it is moved to tmap.id\n */\n this.executeUpgrade('0.9.0', meta.dataStructureState, function () {\n\n var confRef = env.ref.visUserConf;\n var userConf = _utils2.default.unflatten(_this.wiki.getTiddlerData(confRef, {}));\n\n if (_typeof(userConf.groups) === 'object') {\n\n var type = _NodeType2.default.getInstance('tmap:neighbour');\n type.setStyle(userConf.groups['neighbours']);\n type.save();\n\n delete userConf.groups;\n _this.wiki.setTiddlerData(confRef, userConf);\n }\n });\n\n /**\n * Changes:\n * 1. The node id field is moved to tmap.id if **original version**\n * is below v0.9.2.\n */\n this.fixId();\n\n /**\n * This will ensure that all node types have a prioritization field\n * set.\n */\n this.executeUpgrade('0.9.16', meta.dataStructureState, function () {\n\n for (var i = _this.glNTy.length; i--;) {\n _this.glNTy[i].save(null, true);\n }\n });\n\n /**\n * Fixes the live tab\n */\n this.executeUpgrade('0.10.3', meta.dataStructureState, function () {\n\n var liveTab = env.ref.liveTab;\n if (_utils2.default.getTiddler(liveTab).hasTag('$:/tags/SideBar')) {\n this.wiki.deleteTiddler(liveTab);\n _utils2.default.setField(liveTab, 'tags', '$:/tags/SideBar');\n }\n });\n\n /**\n * 1) Fixes the edge type filter. Before, an empty filter was\n * treated as default filter, i.e. no links and tags shown.\n * Now an empty filter means that we show all edge types.\n *\n * 2) Adds prefix to hide private edges per default\n *\n * 3) Corrects view-namespaces (formerly stored with colon).\n *\n */\n this.executeUpgrade('0.11.0', meta.dataStructureState, function () {\n\n var views = _utils2.default.getMatches(env.selector.allViews);\n\n for (var i = views.length; i--;) {\n\n var view = new _ViewAbstraction2.default(views[i]);\n var eTyFilter = view.getEdgeTypeFilter('raw');\n var confKey = 'edge_type_namespace';\n view.setConfig(confKey, view.getConfig(confKey));\n\n var f = env.filter.defaultEdgeTypeFilter;\n\n if (eTyFilter) {\n\n // remove any occurences of the egde type path prefix\n var edgeTypePath = env.path.edgeTypes;\n eTyFilter = _utils2.default.replaceAll(eTyFilter, '', [edgeTypePath, edgeTypePath + '/', '[prefix[' + edgeTypePath + ']]', '[prefix[' + edgeTypePath + '/]]', ['[suffix[tw-body:link]]', '[[tw-body:link]]'], ['[suffix[tw-list:tags]]', '[[tw-list:tags]]'], ['[suffix[tw-list:list]]', '[[tw-body:list]]'], ['[suffix[tmap:unknown]]', '[[tmap:unknown]]'], ['[suffix[unknown]]', '[[tmap:unknown]]']]);\n\n f = '-[prefix[_]] ' + eTyFilter;\n }\n\n view.setEdgeTypeFilter(f);\n }\n });\n }\n }]);\n\n return Fixer;\n}();\n\n/*** Exports *******************************************************/\n\nexports.default = Fixer;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/Fixer.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/startup/listener": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/startup/listener",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startup = exports.synchronous = exports.before = exports.after = exports.platforms = exports.name = undefined;\n\nvar _NodeType = require('$:/plugins/felixhayashi/tiddlymap/js/NodeType');\n\nvar _NodeType2 = _interopRequireDefault(_NodeType);\n\nvar _EdgeType = require('$:/plugins/felixhayashi/tiddlymap/js/EdgeType');\n\nvar _EdgeType2 = _interopRequireDefault(_EdgeType);\n\nvar _Edge = require('$:/plugins/felixhayashi/tiddlymap/js/Edge');\n\nvar _Edge2 = _interopRequireDefault(_Edge);\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _vis = require('$:/plugins/felixhayashi/tiddlymap/js/config/vis');\n\nvar _vis2 = _interopRequireDefault(_vis);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*** Code **********************************************************/\n\n/**\n * @param {Object} param - event.param\n */\nvar handleCancelDialog = function handleCancelDialog(_ref) {\n var param = _ref.param;\n\n _utils2.default.setField(param, 'text', '');\n};\n\n/**\n * @param {Object} paramObject - event.paramObject\n */\n// @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/startup/listener\ntype: application/javascript\nmodule-type: startup\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nvar handleClearTiddler = function handleClearTiddler() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n paramObject = _ref2.paramObject;\n\n var title = paramObject.title,\n keep = paramObject.keep;\n\n\n if (!title) return;\n\n var tObj = _utils2.default.getTiddler(title);\n var originalFields = tObj ? tObj.fields : {};\n var fieldsToKeep = keep ? keep.split() : [];\n var cloneFields = {\n title: title,\n text: '' // see https://github.com/Jermolene/TiddlyWiki5/issues/2025\n };\n\n for (var i = fieldsToKeep.length; i--;) {\n var fieldName = fieldsToKeep[i];\n cloneFields[fieldName] = originalFields[fieldName];\n }\n\n $tw.wiki.deleteTiddler(title);\n $tw.wiki.addTiddler(new $tw.Tiddler(cloneFields));\n};\n\n/**\n * @param {Object} paramObject - event.paramObject\n */\nvar handleMixTiddlers = function handleMixTiddlers(_ref3) {\n var _ref3$paramObject = _ref3.paramObject,\n paramObject = _ref3$paramObject === undefined ? {} : _ref3$paramObject;\n var tiddlersStringArray = paramObject.tiddlers,\n output = paramObject.output;\n\n\n if (!tiddlersStringArray || !output) return;\n\n var tiddlers = $tw.utils.parseStringArray(tiddlersStringArray);\n var tObj = _utils2.default.getMergedTiddlers(tiddlers, output);\n\n $tw.wiki.addTiddler(tObj);\n};\n\n/**\n * @param {string} param - event.param\n */\nvar handleConfirmDialog = function handleConfirmDialog(_ref4) {\n var param = _ref4.param;\n\n\n _utils2.default.setField(param, 'text', '1');\n};\n\n/**\n * @param {Object} paramObject - event.paramObject\n */\nvar handleSuppressDialog = function handleSuppressDialog(_ref5) {\n var paramObject = _ref5.paramObject;\n var dialog = paramObject.dialog,\n suppress = paramObject.suppress;\n\n\n if (_utils2.default.isTrue(suppress, false)) {\n _utils2.default.setEntry($tm.ref.sysUserConf, 'suppressedDialogs.' + dialog, true);\n }\n};\n\n/**\n * @param {Object} paramObject - event.paramObject\n */\nvar handleDownloadGraph = function handleDownloadGraph(_ref6) {\n var paramObject = _ref6.paramObject;\n var view = paramObject.view;\n\n var graph = $tm.adapter.getGraph({ view: view });\n\n graph.nodes = _utils2.default.convert(graph.nodes, 'array');\n graph.edges = _utils2.default.convert(graph.edges, 'array');\n\n var tRef = '$:/temp/tmap/export';\n\n _utils2.default.setField(tRef, 'text', JSON.stringify(graph, null, 2));\n\n $tw.rootWidget.dispatchEvent({\n type: 'tm-download-file',\n param: tRef,\n paramObject: {\n filename: view + '.json'\n }\n });\n};\n\n/**\n *\n */\nvar handleConfigureSystem = function handleConfigureSystem() {\n\n var allTiddlers = _utils2.default.getMatches($tm.selector.allPotentialNodes);\n var allEdges = $tm.adapter.getEdgesForSet(allTiddlers);\n var plugin = $tw.wiki.getTiddler($tm.path.pluginRoot).fields;\n var meta = $tw.wiki.getTiddlerData($tm.ref.sysMeta);\n var hasLiveTab = _utils2.default.getTiddler($tm.ref.liveTab).hasTag('$:/tags/SideBar');\n\n var args = {\n numberOfNodes: '' + allTiddlers.length,\n numberOfEdges: '' + Object.keys(allEdges).length,\n pluginVersion: 'v' + plugin.version,\n dataStructureVersion: 'v' + meta.dataStructureState,\n dialog: {\n preselects: {\n 'liveTab': '' + hasLiveTab,\n 'vis-inherited': JSON.stringify(_vis2.default),\n 'config.vis': _utils2.default.getText($tm.ref.visUserConf),\n 'config.sys': $tm.config.sys\n }\n }\n };\n\n $tm.dialogManager.open('globalConfig', args, function (isConfirmed, outTObj) {\n\n if (!isConfirmed) return;\n\n var config = _utils2.default.getPropertiesByPrefix(outTObj.fields, 'config.sys.', true);\n\n // CAREFUL: this is a data tiddler!\n $tw.wiki.setTiddlerData($tm.ref.sysUserConf, config);\n\n // show or hide the live tab; to hide the live tab, we override\n // the shadow tiddler; to show it, we remove the overlay again.\n if (_utils2.default.isTrue(outTObj.fields.liveTab, false)) {\n _utils2.default.setField($tm.ref.liveTab, 'tags', '$:/tags/SideBar');\n } else {\n $tw.wiki.deleteTiddler($tm.ref.liveTab);\n }\n\n // tw doesn't translate the json to an object so this is already a string\n _utils2.default.setField($tm.ref.visUserConf, 'text', outTObj.fields['config.vis']);\n });\n};\n\n/**\n * @param {Object} paramObject - event.paramObject\n */\nvar handleGenerateWidget = function handleGenerateWidget(_ref7) {\n var _ref7$paramObject = _ref7.paramObject,\n paramObject = _ref7$paramObject === undefined ? {} : _ref7$paramObject;\n\n\n var options = {\n dialog: {\n preselects: {\n 'var.view': paramObject.view || $tm.misc.defaultViewLabel\n }\n }\n };\n\n $tm.dialogManager.open('widgetCodeGenerator', options);\n};\n\n/**\n * @param {Object} paramObject - event.paramObject\n */\nvar handleRemoveEdge = function handleRemoveEdge(_ref8) {\n var paramObject = _ref8.paramObject;\n\n\n $tm.adapter.deleteEdge(paramObject);\n};\n\n/**\n * @param {Object} paramObject - event.paramObject\n */\nvar handleCreateEdge = function handleCreateEdge(_ref9) {\n var paramObject = _ref9.paramObject;\n var from = paramObject.from,\n to = paramObject.to,\n isForce = paramObject.force;\n\n\n if (!from || !to) return;\n\n if (_utils2.default.tiddlerExists(from) && _utils2.default.tiddlerExists(to) || isForce) {\n\n // will not override any existing tiddlers…\n _utils2.default.addTiddler(to);\n _utils2.default.addTiddler(from);\n\n var edge = new _Edge2.default($tm.adapter.makeNode(from).id, $tm.adapter.makeNode(to).id, paramObject.label, paramObject.id);\n\n $tm.adapter.insertEdge(edge);\n $tm.notify('Edge inserted');\n }\n};\n\n/**\n * @param {string} type - event.type\n * @param {Object} [paramObject] - event.paramObject\n */\nvar handleOpenTypeManager = function handleOpenTypeManager(_ref10) {\n var type = _ref10.type,\n _ref10$paramObject = _ref10.paramObject,\n paramObject = _ref10$paramObject === undefined ? {} : _ref10$paramObject;\n\n\n // either 'manage-edge-types' or 'manage-node-types'\n var mode = type.match(/tmap:tm-(.*)/)[1];\n\n if (mode === 'manage-edge-types') {\n var topic = 'Edge-Type Manager';\n var allTypesSelector = $tm.selector.allEdgeTypes;\n var typeRootPath = $tm.path.edgeTypes;\n } else {\n var topic = 'Node-Type Manager';\n var allTypesSelector = $tm.selector.allNodeTypes;\n var typeRootPath = $tm.path.nodeTypes;\n }\n\n var args = {\n mode: mode,\n topic: topic,\n searchSelector: allTypesSelector,\n typeRootPath: typeRootPath\n };\n\n var dialogTObj = $tm.dialogManager.open('MapElementTypeManager', args);\n\n if (paramObject.type) {\n handleLoadTypeForm({\n paramObject: {\n mode: mode,\n id: paramObject.type,\n output: dialogTObj.fields['output']\n }\n });\n }\n};\n\n/**\n * @param {string} id - The id of a {@link MapElementType}\n * @param {('manage-edge-types'|'manage-node-types')} mode\n * @param {TiddlerReference} output\n */\nvar handleLoadTypeForm = function handleLoadTypeForm(_ref11) {\n var _ref11$paramObject = _ref11.paramObject,\n mode = _ref11$paramObject.mode,\n id = _ref11$paramObject.id,\n output = _ref11$paramObject.output;\n\n\n var outTRef = output;\n var type = mode === 'manage-edge-types' ? _EdgeType2.default.getInstance(id) : _NodeType2.default.getInstance(id);\n\n // inject all the type data as fields into the dialog output\n type.save(outTRef, true);\n\n // fields that need preprocessing\n\n if (mode === 'manage-edge-types') {\n var usage = $tm.adapter.selectEdgesByType(type);\n var count = Object.keys(usage).length;\n _utils2.default.setField(outTRef, 'temp.usageCount', count);\n }\n\n $tw.wiki.addTiddler(new $tw.Tiddler(_utils2.default.getTiddler(outTRef), {\n 'typeTRef': type.fullPath,\n 'temp.idImmutable': type.isShipped ? 'true' : '',\n 'temp.newId': type.id,\n 'vis-inherited': JSON.stringify($tm.config.vis)\n }));\n\n // reset the tabs to default\n _utils2.default.deleteByPrefix('$:/state/tabs/MapElementTypeManager');\n};\n\n/**\n * @param {Object} paramObject - event.paramObject\n */\nvar handleSaveTypeForm = function handleSaveTypeForm(_ref12) {\n var paramObject = _ref12.paramObject;\n\n\n var tObj = _utils2.default.getTiddler(paramObject.output);\n if (!tObj) return;\n\n var id = tObj.fields.id;\n var mode = paramObject.mode;\n\n if (_utils2.default.isTrue(tObj.fields['temp.deleteType'], false)) {\n deleteType(mode, id, tObj);\n } else {\n saveType(mode, id, tObj);\n }\n};\n\nvar deleteType = function deleteType(mode, id, dialogOutput) {\n\n var type = mode === 'manage-edge-types' ? _EdgeType2.default.getInstance(id) : _NodeType2.default.getInstance(id);\n\n $tm.logger('debug', 'Deleting type', type);\n\n if (mode === 'manage-edge-types') {\n $tm.adapter._processEdgesWithType(type, { action: 'delete' });\n } else {\n $tm.adapter.removeNodeType(type);\n }\n\n $tw.wiki.addTiddler(new $tw.Tiddler({\n title: _utils2.default.getTiddlerRef(dialogOutput)\n }));\n\n $tm.notify('Deleted type');\n};\n\n/**\n * @param {string} id - The id of a {@link MapElementType}\n * @param {('manage-edge-types'|'manage-node-types')} mode\n * @param {TiddlerReference} output\n */\nvar saveType = function saveType(mode, id, output) {\n\n var tObj = _utils2.default.getTiddler(output);\n\n // update the type with the form data\n var Type = mode === 'manage-edge-types' ? _EdgeType2.default : _NodeType2.default;\n var type = new Type(id, tObj);\n type.save();\n\n var newId = tObj.fields['temp.newId'];\n\n if (newId && newId !== tObj.fields['id']) {\n //renamed\n\n if (mode === 'manage-edge-types') {\n\n $tm.adapter._processEdgesWithType(type, {\n action: 'rename',\n newName: newId\n });\n } else {\n\n new _NodeType2.default(newId, type).save();\n $tw.wiki.deleteTiddler(type.fullPath);\n }\n\n _utils2.default.setField(tObj, 'id', newId);\n }\n\n $tm.notify('Saved type data');\n};\n\n/**\n * @param {string} id - The id of a {@link MapElementType}\n * @param {('manage-edge-types'|'manage-node-types')} mode\n * @param {TiddlerReference} output\n */\nvar handleCreateType = function handleCreateType(_ref13) {\n var _ref13$paramObject = _ref13.paramObject,\n mode = _ref13$paramObject.mode,\n _ref13$paramObject$id = _ref13$paramObject.id,\n id = _ref13$paramObject$id === undefined ? 'New type' : _ref13$paramObject$id,\n output = _ref13$paramObject.output;\n\n\n var type = mode === 'manage-edge-types' ? new _EdgeType2.default(id) : new _NodeType2.default(id);\n\n type.save();\n\n handleLoadTypeForm({ paramObject: { id: type.id, mode: mode, output: output } });\n};\n\n/*** Exports *******************************************************/\n\nvar name = exports.name = 'tmap.listener';\nvar platforms = exports.platforms = ['browser'];\nvar after = exports.after = ['rootwidget', 'tmap.caretaker'];\nvar before = exports.before = ['story'];\nvar synchronous = exports.synchronous = true;\nvar startup = exports.startup = function startup() {\n _utils2.default.addTWlisteners({\n 'tmap:tm-remove-edge': handleRemoveEdge,\n 'tmap:tm-load-type-form': handleLoadTypeForm,\n 'tmap:tm-save-type-form': handleSaveTypeForm,\n 'tmap:tm-create-type': handleCreateType,\n 'tmap:tm-create-edge': handleCreateEdge,\n 'tmap:tm-suppress-dialog': handleSuppressDialog,\n 'tmap:tm-generate-widget': handleGenerateWidget,\n 'tmap:tm-download-graph': handleDownloadGraph,\n 'tmap:tm-configure-system': handleConfigureSystem,\n 'tmap:tm-manage-edge-types': handleOpenTypeManager,\n 'tmap:tm-manage-node-types': handleOpenTypeManager,\n 'tmap:tm-cancel-dialog': handleCancelDialog,\n 'tmap:tm-clear-tiddler': handleClearTiddler,\n 'tmap:tm-merge-tiddlers': handleMixTiddlers,\n 'tmap:tm-confirm-dialog': handleConfirmDialog\n }, $tw.rootWidget, undefined);\n};\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/Listener.js.map\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/plugins/felixhayashi/tiddlymap/js/services/tracker": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/services/tracker",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/services/tracker\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/***************************** CODE ********************************/\n\n/**\n *\n */\nvar Tracker = function () {\n function Tracker(fixer) {\n _classCallCheck(this, Tracker);\n\n this.wiki = $tw.wiki;\n this.logger = $tm.logger;\n\n this._createIndex();\n }\n\n /**\n * TiddlyMap uses ids to reference tiddlers. This function creates\n * a table that maps ids to tRefs and vice versa.\n *\n * Two indeces are added to the indeces chain:\n * 1. tById – tiddler references by id\n * 2. idByT – ids by tiddler references\n *\n * @param {Array<TiddlerReference>} [allTiddlers] - The tiddlers to\n * use as basis for this index. If not stated, all tiddlers in\n * the wiki are used.\n */\n\n\n _createClass(Tracker, [{\n key: '_createIndex',\n value: function _createIndex() {\n\n var tById = this.tById = {}; // tiddlerById\n var idByT = this.idByT = {}; // idByTiddler\n\n this.wiki.each(function (tObj, tRef) {\n\n if (_utils2.default.isSystemOrDraft(tObj)) {\n return;\n }\n\n // will create id if not present\n var id = tObj.fields['tmap.id'];\n if (!id) {\n id = _utils2.default.genUUID();\n _utils2.default.setField(tObj, 'tmap.id', id);\n }\n\n tById[id] = tRef; // tiddlerById\n idByT[tRef] = id; // idByTiddler\n });\n }\n\n /**\n * This method will assign an id to an *existing* tiddler that does\n * not already possess and id. Any assigned id will be registered\n * at the id->tiddler index.\n *\n * @param {Tiddler} tiddler - The tiddler to assign the id to.\n * @param {boolean} isForce - True if the id should be overridden,\n * false otherwise. Only works if the id field is not set to title.\n *\n * @return {Id} The assigned or retrieved id.\n */\n\n }, {\n key: 'assignId',\n value: function assignId(tiddler, isForce) {\n\n // Note: always reload from store to avoid setting wrong ids on tiddler\n // being in the role of from and to at the same time.\n var tObj = _utils2.default.getTiddler(tiddler);\n\n if (!tObj) {\n throw new ResourceNotFoundException(tiddler);\n }\n\n var id = tObj.fields['tmap.id'];\n\n if (!id || isForce) {\n id = _utils2.default.genUUID();\n _utils2.default.setField(tObj, 'tmap.id', id);\n this.logger('info', 'Assigning new id to', tObj.fields.title);\n }\n\n // blindly update the index IN ANY CASE because tiddler may have\n // an id but it is not indexed yet (e.g. because of renaming operation)\n this.tById[id] = tObj.fields.title;\n this.idByT[tObj.fields.title] = id;\n\n return id;\n }\n\n /**\n * @param {Tiddler} tiddler\n * @return string\n */\n\n }, {\n key: 'getIdByTiddler',\n value: function getIdByTiddler(tiddler) {\n\n return this.idByT[_utils2.default.getTiddlerRef(tiddler)];\n }\n }, {\n key: 'getIdsByTiddlers',\n value: function getIdsByTiddlers() {\n return this.idByT;\n }\n }, {\n key: 'getTiddlersByIds',\n value: function getTiddlersByIds() {\n return this.tById;\n }\n\n /**\n * @param id\n * @return {TiddlerReference} tiddler\n */\n\n }, {\n key: 'getTiddlerById',\n value: function getTiddlerById(id) {\n\n return this.tById[id];\n }\n }]);\n\n return Tracker;\n}();\n\n/*** Exports *******************************************************/\n\nexports.default = Tracker;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/Tracker.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/widget/MapConfigWidget": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/widget/MapConfigWidget",
"text": "'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/widget/MapConfigWidget\ntype: application/javascript\nmodule-type: widget\n\n@preserve\n\n\\*/\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _vis = require('$:/plugins/felixhayashi/vis/vis.js');\n\nvar _vis2 = _interopRequireDefault(_vis);\n\nvar _widget = require('$:/core/modules/widgets/widget.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Wrapper for the Visjs configurator.\n *\n * ```\n * <$tmap-config\n * inherited=\"FIELDNAME FIELDNAME …\"\n * extension=\"FIELDNAME\"\n * changes=\"FIELDNAME\" (default: same field as extension)\n * override=\"true|false\" (default: false)\n * mode=\"manage-*\"\n * refresh-trigger=\"tRef\" />\n * ```\n *\n * @constructor\n */\nfunction MapConfigWidget(parseTreeNode, options) {\n\n // call the parent constructor\n _widget.widget.call(this);\n\n // call initialise on prototype\n this.initialise(parseTreeNode, options);\n\n // make the html attributes available to this widget\n this.computeAttributes();\n}\n\n// !! EXTENSION !!\nMapConfigWidget.prototype = Object.create(_widget.widget.prototype);\n// !! EXTENSION !!\n\n/**\n * Method to render this widget into the DOM.\n *\n * @override\n */\nMapConfigWidget.prototype.render = function (parent, nextSibling) {\n\n // remember our place in the dom\n this.parentDomNode = parent;\n\n if (!this.domNode) {\n this.domNode = this.document.createElement('div');\n $tw.utils.addClass(this.domNode, 'tmap-config-widget');\n parent.insertBefore(this.domNode, nextSibling);\n }\n\n if (this.network) {\n\n // destroy any previous instance\n this.network.destroy();\n }\n\n // create container for vis configurator; destroyed when vis is destroyed\n this.networkContainer = document.createElement('div');\n this.domNode.appendChild(this.networkContainer);\n\n // get environment\n this.refreshTrigger = this.getAttribute('refresh-trigger');\n this.pipeTRef = this.getVariable('currentTiddler');\n this.inheritedFields = $tw.utils.parseStringArray(this.getAttribute('inherited'));\n this.extensionTField = this.getAttribute('extension');\n this.mode = this.getAttribute('mode');\n\n // load inherited options\n for (var i = 0; i < this.inheritedFields.length; i++) {\n var fieldName = this.inheritedFields[i];\n var style = _utils2.default.parseFieldData(this.pipeTRef, fieldName, {});\n\n // maybe the inherited options also come without a top level property\n // so we do the same here to…\n // TODO looks clumsy; do it in a more generic way…\n if (this.mode === 'manage-edge-types') {\n if (!style.edges) {\n style = { edges: style };\n }\n } else if (this.mode === 'manage-node-types') {\n if (!style.nodes) {\n style = { nodes: style };\n }\n }\n\n this.inherited = _utils2.default.merge(this.inherited, style);\n }\n\n // load extension to the inherited options; since we store vis config\n // for nodes and edges without the top level property, we may need to\n // append it again, if not done so already.\n this.extension = _utils2.default.parseFieldData(this.pipeTRef, this.extensionTField, {});\n // TODO looks clumsy; do it in a more generic way…\n if (this.mode === 'manage-edge-types') {\n if (!this.extension.edges) {\n this.extension = { edges: this.extension };\n }\n } else if (this.mode === 'manage-node-types') {\n if (!this.extension.nodes) {\n this.extension = { nodes: this.extension };\n }\n }\n\n // we record all changes in a separate variable\n var isSaveOnlyChanges = _utils2.default.isTrue(this.getAttribute('save-only-changes'));\n this.changes = isSaveOnlyChanges ? {} : this.extension;\n\n var data = { nodes: [], edges: [] };\n var options = _utils2.default.merge({}, this.inherited, this.extension);\n $tw.utils.extend(options, {\n configure: {\n enabled: true,\n showButton: false,\n filter: this.getOptionFilter(this.mode)\n }\n });\n\n this.network = new _vis2.default.Network(this.networkContainer, data, options);\n this.network.on('configChange', this.handleConfigChange.bind(this));\n\n // giving the parent a css height will prevent it from jumping\n // back when the network is destroyed and the network\n // container is removed.\n // fixes https://github.com/almende/vis/issues/1568\n var height = this.parentDomNode.getBoundingClientRect().height;\n this.parentDomNode.style['height'] = height + 'px';\n\n var reset = this.handleResetEvent.bind(this);\n this.networkContainer.addEventListener('reset', reset, false);\n\n // register this graph at the caretaker's graph registry\n $tm.registry.push(this);\n\n this.enhanceConfigurator();\n};\n\n/**\n * I only receive the option that has actually changed\n */\nMapConfigWidget.prototype.handleResetEvent = function (ev) {\n var change = {};\n change[ev.detail.trigger.path] = null;\n this.handleConfigChange(change);\n};\n\n/**\n * I only receive the option that has actually changed\n */\nMapConfigWidget.prototype.handleConfigChange = function (change) {\n\n var flatChanges = _utils2.default.flatten(this.changes);\n var flatChange = _utils2.default.flatten(change);\n var confPath = Object.keys(_utils2.default.flatten(change))[0];\n var isReset = flatChange[confPath] === null;\n\n if (isReset) {\n // we interpret this as delete\n\n flatChanges[confPath] = undefined;\n this.changes = _utils2.default.unflatten(flatChanges);\n } else {\n\n this.changes = _utils2.default.merge(this.changes, change);\n }\n\n // when storing edge- or node-styles we strip the root property\n var options = _utils2.default.merge({}, this.changes);\n if (this.mode === 'manage-node-types') {\n options = options['nodes'];\n }\n if (this.mode === 'manage-edge-types') {\n options = options['edges'];\n }\n\n // save changes\n _utils2.default.writeFieldData(this.pipeTRef, this.extensionTField, options, $tm.config.sys.jsonIndentation);\n\n // hack to ensure vis doesn't scroll\n var cls = 'vis-configuration-wrapper';\n var div = this.networkContainer.getElementsByClassName(cls)[0];\n div.style.height = div.getBoundingClientRect().height + 'px';\n\n if (isReset) {\n\n // we need to use a timeout here, otherwise we cause a vis bug\n // since it is in the middle of storing the value!\n window.setTimeout(this.refresh.bind(this), 0);\n } else {\n\n // add active-config indicators\n window.setTimeout(this.enhanceConfigurator.bind(this), 50);\n }\n};\n\n/**\n * enhanceConfigurator over all config items and add an indicator.\n */\nMapConfigWidget.prototype.enhanceConfigurator = function () {\n\n var cls = 'vis-configuration-wrapper';\n var elements = this.networkContainer.getElementsByClassName(cls)[0].children;\n var list = [];\n var changes = _utils2.default.flatten(this.changes);\n for (var i = 0; i < elements.length; i++) {\n if (!elements[i].classList.contains('vis-config-item')) continue;\n\n var conf = new VisConfElement(elements[i], list, i);\n list.push(conf);\n\n if (conf.level === 0) continue;\n\n conf.setActive(!!changes[conf.path]);\n }\n};\n\n/**\n *\n * @param {DOMElement} The config item element.\n * @param {Array<VisConfElement>} a list of VisConfElements of which\n * this element is also part of.\n * @param {number} the position in the list\n */\nfunction VisConfElement(el, list, pos) {\n\n var getByCls = 'getElementsByClassName';\n\n this.el = el;\n this.labelEl = el[getByCls]('vis-config-label')[0] || el[getByCls]('vis-config-header')[0] || el;\n var labelText = this.labelEl.innerText || this.labelEl.textContent;\n this.label = labelText && labelText.match(/([a-zA-Z0-9]+)/)[1];\n this.level = parseInt(el.className.match(/.*vis-config-s(.).*/)[1]) || 0;\n\n this.path = this.label;\n\n if (this.level > 0) {\n for (var i = pos; i--;) {\n var prev = list[i];\n if (prev.level < this.level) {\n this.path = prev.path + '.' + this.path;\n break;\n }\n }\n }\n}\n\nVisConfElement.prototype.setActive = function (isEnable) {\n\n if (!isEnable) return;\n\n // cannot use utils.hasKeyWithPrefix because some keys start with\n // same value as others\n var cls = 'tmap-vis-config-item-' + (isEnable ? 'active' : 'inactive');\n $tw.utils.addClass(this.el, cls);\n\n if (isEnable) {\n\n var button = document.createElement('button');\n button.innerHTML = 'reset';\n button.className = 'tmap-config-item-reset';\n\n var self = this;\n\n button.addEventListener('click', function (ev) {\n ev.currentTarget.dispatchEvent(new CustomEvent('reset', {\n detail: { trigger: self },\n bubbles: true,\n cancelable: true\n }));\n }, false);\n\n this.el.appendChild(button);\n }\n};\n\n/**\n *\n *\n */\nMapConfigWidget.prototype.getOptionFilter = function (mode) {\n\n var whitelist = {\n nodes: {\n borderWidth: true,\n borderWidthSelected: true,\n color: {\n background: true,\n border: true\n },\n font: {\n color: true,\n size: true\n },\n icon: true,\n labelHighlightBold: false,\n shadow: true,\n shape: true,\n shapeProperties: {\n borderDashes: true\n\n },\n size: true\n },\n edges: {\n arrows: true,\n color: true,\n dashes: true,\n font: true,\n labelHighlightBold: false,\n length: true,\n selfReferenceSize: false,\n shadow: true,\n smooth: true,\n width: true\n },\n interaction: {\n hideEdgesOnDrag: true,\n hideNodesOnDrag: true,\n tooltipDelay: true\n },\n layout: {\n hierarchical: false\n },\n manipulation: {\n initiallyActive: true\n },\n physics: {\n forceAtlas2Based: {\n gravitationalConstant: true,\n springLength: true,\n springConstant: true,\n damping: true,\n centralGravity: true\n }\n }\n };\n\n if (mode === 'manage-edge-types') {\n whitelist = { edges: whitelist.edges };\n } else if (mode === 'manage-node-types') {\n whitelist = { nodes: whitelist.nodes };\n } else {\n whitelist.edges.arrows = false;\n }\n\n return function (option, path) {\n\n // operate on a clone; add option as element\n path = path.concat([option]);\n\n var wlObj = whitelist;\n for (var i = 0, l = path.length; i < l; i++) {\n if (wlObj[path[i]] === true) {\n return true;\n } else if (wlObj[path[i]] == null) {\n return false;\n } // else assume object\n wlObj = wlObj[path[i]];\n }\n\n return false;\n };\n};\n\n/**\n * A zombie widget is a widget that is removed from the dom tree\n * but still referenced or still partly executed -- I mean\n * otherwise you couldn't call this function, right?\n *\n * @TODO Outsource this as interface or common super class\n */\nMapConfigWidget.prototype.isZombieWidget = function () {\n\n return !document.body.contains(this.parentDomNode);\n};\n\n/**\n * called from outside.\n *\n * @TODO Outsource this as interface or common super class\n */\nMapConfigWidget.prototype.destruct = function () {\n\n if (this.network) {\n this.network.destroy();\n }\n};\n\n/**\n * This function is called by the system to notify the widget about\n * tiddler changes.\n *\n * @override\n */\nMapConfigWidget.prototype.refresh = function (changedTiddlers) {\n\n if (this.isZombieWidget() || !this.network) return;\n\n if (!changedTiddlers || changedTiddlers[this.refreshTrigger]) {\n this.refreshSelf();\n return true;\n }\n};\n\nMapConfigWidget.prototype.setNull = function (obj) {\n\n for (var p in obj) {\n\n if (_typeof(obj[p]) == 'object') {\n\n this.setNull(obj[p]);\n } else {\n\n obj[p] = undefined;\n }\n }\n};\n\n/*** Exports *******************************************************/\n\nexports['tmap-config'] = MapConfigWidget;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/widget/ConfigurationWidget.js.map\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidgetItem": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidgetItem",
"text": "'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _widget = require('$:/core/modules/widgets/widget.js');\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidgetItem\ntype: application/javascript\nmodule-type: widget\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/*** Code **********************************************************/\n\nvar EdgeListItemWidget = function (_Widget) {\n _inherits(EdgeListItemWidget, _Widget);\n\n function EdgeListItemWidget(parseTreeNode, options) {\n _classCallCheck(this, EdgeListItemWidget);\n\n var _this = _possibleConstructorReturn(this, (EdgeListItemWidget.__proto__ || Object.getPrototypeOf(EdgeListItemWidget)).call(this, parseTreeNode, options));\n\n _this.arrows = $tm.misc.arrows;\n\n return _this;\n }\n\n _createClass(EdgeListItemWidget, [{\n key: 'execute',\n value: function execute() {\n\n var item = this.parseTreeNode;\n var tRef = $tm.tracker.getTiddlerById(item.neighbour.id);\n\n // make edge properties available as variables\n var edge = _utils2.default.flatten(item.edge);\n\n for (var p in edge) {\n if (typeof edge[p] === 'string') {\n this.setVariable('edge.' + p, edge[p]);\n }\n }\n\n // Perspective: Neighbour\n this.setVariable('currentTiddler', tRef);\n this.setVariable('neighbour', tRef);\n\n var type = $tm.indeces.allETy[edge.type];\n var indexedAs = edge.to === item.neighbour.id ? 'to' : 'from';\n var arrow = indexedAs;\n\n if (type.biArrow) {\n arrow = 'bi';\n } else {\n if (indexedAs === 'to' && type.invertedArrow) {\n arrow = 'from';\n } else if (indexedAs === 'from' && type.invertedArrow) {\n arrow = 'to';\n }\n }\n\n this.setVariable('direction', arrow);\n this.setVariable('directionSymbol', arrow === 'bi' ? this.arrows.bi : arrow === 'from' ? this.arrows.in : this.arrows.out);\n\n // Construct the child widgets\n this.makeChildWidgets();\n }\n }, {\n key: 'refresh',\n value: function refresh(changedTiddlers) {\n\n return this.refreshChildren(changedTiddlers);\n }\n }]);\n\n return EdgeListItemWidget;\n}(_widget.widget);\n\n/*** Exports *******************************************************/\n\nexports['tmap-edgelistitem'] = EdgeListItemWidget;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/widget/EdgeListItemWidget.js.map\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidget": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidget",
"text": "'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _widget = require('$:/core/modules/widgets/widget.js');\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidget\ntype: application/javascript\nmodule-type: widget\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/*** Code **********************************************************/\n\nvar EdgeListWidget = function (_Widget) {\n _inherits(EdgeListWidget, _Widget);\n\n function EdgeListWidget(parseTreeNode, options) {\n _classCallCheck(this, EdgeListWidget);\n\n return _possibleConstructorReturn(this, (EdgeListWidget.__proto__ || Object.getPrototypeOf(EdgeListWidget)).call(this, parseTreeNode, options));\n }\n\n _createClass(EdgeListWidget, [{\n key: 'render',\n value: function render(parent, nextSibling) {\n\n this.parentDomNode = parent;\n this.computeAttributes();\n this.execute();\n this.renderChildren(parent, nextSibling);\n }\n }, {\n key: 'execute',\n value: function execute() {\n\n var nodes = [this.getVariable('currentTiddler')];\n var filter = this.getAttribute('filter', '');\n var direction = this.getAttribute('direction', 'both');\n var allETy = $tm.indeces.allETy;\n var matches = _utils2.default.getEdgeTypeMatches(filter, allETy);\n\n var options = {\n typeWL: _utils2.default.getLookupTable(matches),\n direction: direction\n };\n\n // retrieve nodes and edges\n\n var _$tm$adapter$getNeigh = $tm.adapter.getNeighbours(nodes, options),\n neighbours = _$tm$adapter$getNeigh.nodes,\n edges = _$tm$adapter$getNeigh.edges;\n\n var entries = [];\n for (var id in edges) {\n\n var edge = edges[id];\n var neighbour = neighbours[edge.to] || neighbours[edge.from];\n\n if (!neighbour) {\n // obsolete edge from old times;\n continue;\n }\n\n // make item template\n entries.push({\n type: 'tmap-edgelistitem',\n edge: edge,\n typeWL: options.typeWL,\n neighbour: neighbour,\n // the children of this widget (=what is wrapped inside the\n // widget-element's body) is used as template for the list items\n children: this.parseTreeNode.children\n });\n }\n\n if (!entries.length) {\n\n this.wasEmpty = true;\n entries = this.getEmptyMessage();\n } else if (this.wasEmpty) {\n\n // we need to remove the empty message\n this.removeChildDomNodes();\n }\n\n this.makeChildWidgets(entries);\n }\n }, {\n key: 'getEmptyMessage',\n value: function getEmptyMessage() {\n\n var parser = this.wiki.parseText('text/vnd.tiddlywiki', this.getAttribute('emptyMessage', ''), { parseAsInline: true });\n\n return parser ? parser.tree : [];\n }\n }, {\n key: 'refresh',\n value: function refresh(changedTiddlers) {\n\n var changedAttributes = this.computeAttributes();\n\n if (_utils2.default.hasElements(changedAttributes)) {\n\n this.refreshSelf();\n\n return true;\n }\n\n for (var tRef in changedTiddlers) {\n if (!_utils2.default.isSystemOrDraft(tRef)) {\n\n this.refreshSelf();\n\n return true;\n }\n }\n\n // let children decide for themselves\n return this.refreshChildren(changedTiddlers);\n }\n }]);\n\n return EdgeListWidget;\n}(_widget.widget);\n\n/*** Exports *******************************************************/\n\nexports['tmap-connections'] = EdgeListWidget;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/widget/EdgeListWidget.js.map\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/felixhayashi/tiddlymap/js/widget/MapWidget": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/widget/MapWidget",
"text": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tiddlymap = exports.tmap = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _CallbackManager = require('$:/plugins/felixhayashi/tiddlymap/js/CallbackManager');\n\nvar _CallbackManager2 = _interopRequireDefault(_CallbackManager);\n\nvar _ViewAbstraction = require('$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction');\n\nvar _ViewAbstraction2 = _interopRequireDefault(_ViewAbstraction);\n\nvar _EdgeType = require('$:/plugins/felixhayashi/tiddlymap/js/EdgeType');\n\nvar _EdgeType2 = _interopRequireDefault(_EdgeType);\n\nvar _Popup = require('$:/plugins/felixhayashi/tiddlymap/js/Popup');\n\nvar _Popup2 = _interopRequireDefault(_Popup);\n\nvar _vis = require('$:/plugins/felixhayashi/vis/vis.js');\n\nvar _vis2 = _interopRequireDefault(_vis);\n\nvar _widget = require('$:/core/modules/widgets/widget.js');\n\nvar _utils = require('$:/plugins/felixhayashi/tiddlymap/js/utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _SelectionRectangle = require('$:/plugins/felixhayashi/tiddlymap/js/lib/SelectionRectangle');\n\nvar _SelectionRectangle2 = _interopRequireDefault(_SelectionRectangle);\n\nvar _environment = require('$:/plugins/felixhayashi/tiddlymap/js/lib/environment');\n\nvar env = _interopRequireWildcard(_environment);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @preserve\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/widget/MapWidget\ntype: application/javascript\nmodule-type: widget\n\n@preserve\n\n\\*/\n\n/*** Imports *******************************************************/\n\n/*** Code **********************************************************/\n\n/**\n * The map widget is responsible for drawing the actual network\n * diagrams.\n *\n * @constructor\n */\nvar MapWidget = function (_Widget) {\n _inherits(MapWidget, _Widget);\n\n function MapWidget(parseTreeNode, options) {\n _classCallCheck(this, MapWidget);\n\n // create shortcuts for services and frequently used vars\n var _this = _possibleConstructorReturn(this, (MapWidget.__proto__ || Object.getPrototypeOf(MapWidget)).call(this, parseTreeNode, options));\n\n _this.getAttr = _this.getAttribute;\n _this.isDebug = _utils2.default.isTrue($tm.config.sys.debug, false);\n\n // force early binding of functions to this context\n _utils2.default.bindTo(_this, ['constructTooltip', 'handleResizeEvent', 'handleClickEvent', 'handleCanvasKeyup', 'handleCanvasKeydown', 'handleCanvasScroll', 'handleCanvasMouseMove', 'handleWidgetKeyup', 'handleWidgetKeydown', 'handleTriggeredRefresh', 'handleContextMenu']);\n\n // instanciate managers\n _this.callbackManager = new _CallbackManager2.default();\n\n // make the html attributes available to this widget\n _this.computeAttributes();\n _this.editorMode = _this.getAttr('editor');\n _this.clickToUse = _utils2.default.isTrue(_this.getAttr('click-to-use'), false);\n\n // who am I? the id is used for debugging and special cases\n _this.id = _this.getAttr('object-id') || _this.getStateQualifier();\n\n _this.widgetPopupsPath = $tm.path.tempPopups + '/' + _this.id;\n\n // register listeners that are available in editor mode\n if (_this.editorMode) {\n _utils2.default.addTWlisteners({\n 'tmap:tm-create-view': _this.handleCreateView,\n 'tmap:tm-rename-view': _this.handleRenameView,\n 'tmap:tm-delete-view': _this.handleDeleteView,\n 'tmap:tm-delete-element': _this.handleDeleteElement,\n 'tmap:tm-edit-view': _this.handleEditView,\n 'tmap:tm-generate-widget': _this.handleGenerateWidget,\n 'tmap:tm-toggle-central-topic': _this.handleSetCentralTopic,\n 'tmap:tm-save-canvas': _this.handleSaveCanvas\n }, _this, _this);\n }\n\n // register listeners that are available in any case\n _utils2.default.addTWlisteners({\n 'tmap:tm-focus-node': _this.handleFocusNode,\n 'tmap:tm-reset-focus': _this.repaintGraph\n }, _this, _this);\n\n // Visjs handlers\n _this.visListeners = {\n 'click': _this.handleVisSingleClickEvent,\n 'doubleClick': _this.handleVisDoubleClickEvent,\n 'stabilized': _this.handleVisStabilizedEvent,\n 'selectNode': _this.handleVisSelectNode,\n 'deselectNode': _this.handleVisDeselectNode,\n 'dragStart': _this.handleVisDragStart,\n 'dragEnd': _this.handleVisDragEnd,\n 'hoverNode': _this.handleVisHoverElement,\n 'hoverEdge': _this.handleVisHoverElement,\n 'blurNode': _this.handleVisBlurElement,\n 'blurEdge': _this.handleVisBlurElement,\n 'beforeDrawing': _this.handleVisBeforeDrawing,\n 'afterDrawing': _this.handleVisAfterDrawing,\n 'stabilizationProgress': _this.handleVisLoading,\n 'stabilizationIterationsDone': _this.handleVisLoadingDone\n };\n\n _this.windowDomListeners = {\n 'resize': [_this.handleResizeEvent, false],\n 'click': [_this.handleClickEvent, false],\n 'mousemove': [_this.handleCanvasMouseMove, true]\n };\n\n _this.canvasDomListeners = {\n 'keyup': [_this.handleCanvasKeyup, true],\n 'keydown': [_this.handleCanvasKeydown, true],\n 'mousewheel': [_this.handleCanvasScroll, true],\n 'DOMMouseScroll': [_this.handleCanvasScroll, true],\n 'contextmenu': [_this.handleContextMenu, true]\n };\n\n _this.widgetDomListeners = {\n 'keyup': [_this.handleWidgetKeyup, true],\n 'keydown': [_this.handleWidgetKeydown, true]\n };\n\n _this.conVector = { from: null, to: null };\n return _this;\n }\n\n /**\n * This handler will open a dialog that allows the user to create a\n * new relation between two edges. This includes, that the user\n * gets a chance to specify the edgetype of the connection.\n *\n * If an edge-type namespace has been declared for the entire view,\n * then add it to the `id` of the specified type…\n * - …if the type doesn't exist yet.\n * - …if the type doesn't contain a namespace already, regardless\n * whether it exists or not.\n *\n * Once the user confirmed the dialog, the edge is persisted.\n *\n * Note: this should not trigger a zoom.\n *\n * @param {Edge} edge - A javascript object that contains at least\n * the properties 'from' and 'to'\n * @param {function} [callback] - A function with the signature\n * function(isConfirmed);\n */\n\n\n _createClass(MapWidget, [{\n key: 'handleConnectionEvent',\n value: function handleConnectionEvent(edge, callback) {\n var _this2 = this;\n\n var eTyFilter = this.view.getEdgeTypeFilter();\n\n var param = {\n fromLabel: $tm.adapter.selectNodeById(edge.from).label,\n toLabel: $tm.adapter.selectNodeById(edge.to).label,\n view: this.view.getLabel(),\n eTyFilter: eTyFilter.raw\n };\n\n $tm.dialogManager.open('getEdgeType', param, function (isConfirmed, outTObj) {\n\n if (isConfirmed) {\n\n var str = _utils2.default.getText(outTObj);\n var type = _EdgeType2.default.getInstance(str);\n\n if (!type.namespace) {\n var _EdgeType$getIdParts = _EdgeType2.default.getIdParts(type.id),\n marker = _EdgeType$getIdParts.marker,\n name = _EdgeType$getIdParts.name;\n\n var namespace = _this2.view.getConfig('edge_type_namespace');\n type = _EdgeType2.default.getInstance(_EdgeType2.default.getId(marker, namespace, name));\n }\n\n // persist the type if it doesn't exist\n if (!type.exists()) {\n type.save();\n }\n\n // add type to edge\n edge.type = type.id;\n $tm.adapter.insertEdge(edge);\n\n // prevent zoom\n _this2.isPreventZoomOnNextUpdate = true;\n\n if (!_this2.view.isEdgeTypeVisible(type)) {\n\n $tm.dialogManager.open('edgeNotVisible', {\n type: type.id,\n view: _this2.view.getLabel(),\n eTyFilter: eTyFilter.pretty\n });\n }\n }\n\n if (typeof callback === 'function') {\n callback(isConfirmed);\n }\n });\n }\n\n /**\n * The first time a map is opened, we want to display a welcome message.\n * Once shown, a flag is set and the message is not displayed again.\n */\n\n }, {\n key: 'checkForFreshInstall',\n value: function checkForFreshInstall() {\n\n if (!_utils2.default.getEntry($tm.ref.sysMeta, 'showWelcomeMessage', true)) {\n return;\n }\n\n _utils2.default.setEntry($tm.ref.sysMeta, 'showWelcomeMessage', false);\n\n var args = {\n dialog: {\n preselects: {\n \"config.storyview\": \"true\",\n \"config.navigation\": \"true\",\n \"config.sidebar\": \"true\",\n \"config.demo\": \"true\"\n }\n }\n };\n\n $tm.dialogManager.open('welcome', args, function (isConfirmed, outTObj) {\n\n var config = _utils2.default.getPropertiesByPrefix(outTObj.fields, 'config.', true);\n\n if (config['storyview'] && _utils2.default.tiddlerExists('$:/plugins/felixhayashi/topstoryview')) {\n _utils2.default.setText('$:/view', 'top');\n }\n\n if (config['navigation']) {\n _utils2.default.setText('$:/config/Navigation/openLinkFromInsideRiver', 'above');\n _utils2.default.setText('$:/config/Navigation/openLinkFromOutsideRiver', 'top');\n }\n\n if (config['sidebar']) {\n _utils2.default.setText('$:/themes/tiddlywiki/vanilla/options/sidebarlayout', 'fixed-fluid');\n }\n\n if (config['demo']) {\n var view = $tm.misc.defaultViewLabel;\n\n var n1 = $tm.adapter.insertNode({ label: 'Have fun with', x: 0, y: 0 }, view);\n var n2 = $tm.adapter.insertNode({ label: 'TiddlyMap!!', x: 100, y: 100 }, view);\n\n $tm.adapter.insertEdge({ from: n1.id, to: n2.id });\n }\n\n if (Object.keys(config).length) {\n // trigger a save and reload message\n _utils2.default.touch('$:/plugins/felixhayashi/tiddlymap');\n }\n });\n }\n\n /**\n * A very basic dialog that will tell the user he/she has to make\n * a choice.\n *\n * @param {function} [callback] - A function with the signature\n * function(isConfirmed).\n * @param {string} [message] - An small optional message to display.\n */\n\n }, {\n key: 'openStandardConfirmDialog',\n value: function openStandardConfirmDialog(callback, message) {\n\n var param = { message: message };\n $tm.dialogManager.open('getConfirmation', param, callback);\n }\n\n /**\n * An extention of the default logger mechanism. It works like\n * `this.logger` but will include the object id of the widget\n * instance.\n *\n * @param {string} type - The type of the message (debug, info, warning…)\n * which is exactly the same as in `console[type]`.\n * @param {...*} message - An infinite number of arguments to be printed\n * (just like console).\n */\n\n }, {\n key: 'logger',\n value: function logger(type, message /*, more stuff*/) {\n\n if (this.isDebug) {\n\n var args = Array.prototype.slice.call(arguments, 1);\n args.unshift('@' + this.id);\n args.unshift(type);\n $tm.logger.apply(this, args);\n }\n }\n\n /**\n * Method to render this widget into the DOM.\n *\n * Note that we do not add this.domNode to the list of domNodes\n * since this widget does never remove itself during a refresh.\n *\n * @override\n */\n\n }, {\n key: 'render',\n value: function render(parent, nextSibling) {\n\n this.parentDomNode = parent;\n\n this.domNode = this.document.createElement('div');\n parent.insertBefore(this.domNode, nextSibling);\n\n // add widget classes\n this.registerClassNames(this.domNode);\n\n // get view and view holder\n this.viewHolderRef = this.getViewHolderRef();\n this.view = this.getView();\n\n // create the header div\n this.graphBarDomNode = this.document.createElement('div');\n $tw.utils.addClass(this.graphBarDomNode, 'tmap-topbar');\n this.domNode.appendChild(this.graphBarDomNode);\n\n // create body div\n this.graphDomNode = this.document.createElement('div');\n this.domNode.appendChild(this.graphDomNode);\n\n $tw.utils.addClass(this.graphDomNode, 'tmap-vis-graph');\n\n if (_utils2.default.isPreviewed(this)) {\n\n $tw.utils.addClass(this.domNode, 'tmap-static-mode');\n this.renderPreview(this.graphBarDomNode, this.graphDomNode);\n } else {\n\n // render the full widget\n this.renderFullWidget(this.domNode, this.graphBarDomNode, this.graphDomNode);\n }\n }\n\n /**\n * When the widget is only previewed we do some alternative rendering.\n */\n\n }, {\n key: 'renderPreview',\n value: function renderPreview(header, body) {\n\n var snapshotTRef = this.view.getRoot() + '/snapshot';\n var snapshotTObj = _utils2.default.getTiddler(snapshotTRef);\n\n var label = this.document.createElement('span');\n label.innerHTML = this.view.getLabel();\n label.className = 'tmap-view-label';\n header.appendChild(label);\n\n if (snapshotTObj) {\n\n // Construct child widget tree\n var placeholder = this.makeChildWidget(_utils2.default.getTranscludeNode(snapshotTRef), true);\n placeholder.renderChildren(body, null);\n } else {\n\n $tw.utils.addClass(body, 'tmap-graph-placeholder');\n }\n }\n\n /**\n * The standard way of rendering.\n * Attention: BE CAREFUL WITH THE ORDER OF FUNCTION CALLS IN THIS FUNCTION.\n */\n\n }, {\n key: 'renderFullWidget',\n value: function renderFullWidget(widget, header, body) {\n\n // add window and widget dom node listeners\n _utils2.default.setDomListeners('add', window, this.windowDomListeners);\n _utils2.default.setDomListeners('add', widget, this.widgetDomListeners);\n\n // add a loading bar\n this.addLoadingBar(this.domNode);\n\n // prepare the tooltip for graph elements\n this.tooltip = new _Popup2.default(this.domNode, {\n className: 'tmap-tooltip',\n showDelay: $tm.config.sys.popups.delay\n });\n\n // prepare the context menu\n this.contextMenu = new _Popup2.default(this.domNode, {\n className: 'tmap-context-menu',\n showDelay: 0,\n hideOnClick: true,\n leavingDelay: 999999\n });\n\n // register\n this.sidebar = _utils2.default.getFirstElementByClassName('tc-sidebar-scrollable');\n this.isInSidebar = this.sidebar && !this.domNode.isTiddlyWikiFakeDom && this.sidebar.contains(this.domNode);\n\n // *first* inject the bar\n this.rebuildEditorBar(header);\n\n // *second* initialise graph variables and render the graph\n this.initAndRenderGraph(body);\n\n // register this graph at the caretaker's graph registry\n $tm.registry.push(this);\n\n // if any refresh-triggers exist, register them\n this.reloadRefreshTriggers();\n\n // maybe display a welcome message\n this.checkForFreshInstall();\n\n if (this.id === $tm.misc.mainEditorId) {\n\n var url = $tm.url;\n if (url && url.query['tmap-enlarged']) {\n\n this.toggleEnlargedMode(url.query['tmap-enlarged']);\n //~ this.setView(url.query['tmap-view']);\n }\n }\n }\n\n /**\n * Add some classes to give the user a chance to apply some css\n * to different graph modes.\n */\n\n }, {\n key: 'registerClassNames',\n value: function registerClassNames(parent) {\n\n var addClass = $tw.utils.addClass;\n\n // add main class\n addClass(parent, 'tmap-widget');\n\n if (this.clickToUse) {\n addClass(parent, 'tmap-click-to-use');\n }\n\n if (this.getAttr('editor') === 'advanced') {\n addClass(parent, 'tmap-advanced-editor');\n }\n\n if (this.getAttr('design') === 'plain') {\n addClass(parent, 'tmap-plain-design');\n }\n\n if (!_utils2.default.isTrue(this.getAttr('show-buttons'), true)) {\n addClass(parent, 'tmap-no-buttons');\n }\n\n if (this.getAttr('class')) {\n addClass(parent, this.getAttr('class'));\n }\n }\n\n /**\n * Adds a loading bar div below the parent.\n */\n\n }, {\n key: 'addLoadingBar',\n value: function addLoadingBar(parent) {\n\n this.graphLoadingBarDomNode = this.document.createElement('progress');\n $tw.utils.addClass(this.graphLoadingBarDomNode, 'tmap-loading-bar');\n parent.appendChild(this.graphLoadingBarDomNode);\n }\n\n /**\n * The editor bar contains a bunch of widgets that allow the user\n * to manipulate the current view.\n *\n * Attention: The Editor bar needs to render *after* the graph\n * because some elements depend on the graph's nodes which are\n * calculated when the network is created.\n *\n * @see https://groups.google.com/forum/#!topic/tiddlywikidev/sJrblP4A0o4\n * @see blob/master/editions/test/tiddlers/tests/test-wikitext-parser.js\n */\n\n }, {\n key: 'rebuildEditorBar',\n value: function rebuildEditorBar() {\n\n this.removeChildDomNodes();\n\n // register dialog variables\n\n var view = this.view;\n\n var unicodeBtnClass = 'tmap-unicode-button';\n var activeUnicodeBtnClass = unicodeBtnClass + ' tmap-active-button';\n var variables = {\n widgetQualifier: this.getStateQualifier(),\n widgetTempPath: this.widgetTempPath,\n widgetPopupsPath: this.widgetPopupsPath,\n isViewBound: String(this.isViewBound()),\n viewRoot: view.getRoot(),\n viewLabel: view.getLabel(),\n viewHolder: this.getViewHolderRef(),\n edgeTypeFilter: view.edgeTypeFilterTRef,\n allEdgesFilter: $tm.selector.allEdgeTypes,\n neighScopeBtnClass: view.isEnabled('neighbourhood_scope') ? activeUnicodeBtnClass : unicodeBtnClass,\n rasterMenuBtnClass: view.isEnabled('raster') ? activeUnicodeBtnClass : unicodeBtnClass\n };\n\n for (var name in variables) {\n this.setVariable(name, variables[name]);\n }\n\n // Construct the child widget tree\n var body = _utils2.default.getTiddlerNode(view.getRoot());\n\n if (this.editorMode === 'advanced') {\n\n body.children.push(_utils2.default.getTranscludeNode($tm.ref.graphBar));\n } else {\n\n var el = _utils2.default.getElementNode('span', 'tmap-view-label', view.getLabel());\n body.children.push(el);\n }\n\n body.children.push(_utils2.default.getTranscludeNode($tm.ref.focusButton));\n\n this.makeChildWidgets([body]);\n this.renderChildren(this.graphBarDomNode, this.graphBarDomNode.firstChild);\n }\n\n /**\n * This function is called by the system to notify the widget about\n * tiddler changes. It is ignored by TiddlyMap.\n *\n * ATTENTION: TiddlyMap doesn't use the refresh mechanism here.\n * The caretaker module dispatches an `updates` object that provides\n * more advanced information, tailored to the needs of TiddlyMap.\n * These updates are picked up by {@link MapWidget#update}.\n *\n * @override\n */\n\n }, {\n key: 'refresh',\n value: function refresh(changedTiddlers) {\n\n // TiddlyMap never needs a full refresh so we return false\n return false;\n }\n\n /**\n * This function is called by the caretaker module to notify the\n * widget about tiddler changes.\n *\n * TiddlyMap is interested in the following changes:\n *\n * - Callbacks have been triggered (e.g. dialog results)\n * - A view has been switched\n * - A view has been modified (= configured)\n * - Global options have changed\n * - Node- or edge-types have changed\n * - Graph elements have changed\n * - Changes to the graph's topbar\n *\n * @override\n * @see https://groups.google.com/d/msg/tiddlywikidev/hwtX59tKsIk/EWSG9glqCnsJ\n */\n\n }, {\n key: 'update',\n value: function update(updates) {\n\n if (!this.network || this.isZombieWidget() || _utils2.default.isPreviewed(this)) {\n return;\n }\n\n var changedTiddlers = updates.changedTiddlers;\n\n // check for callback changes\n\n this.callbackManager.refresh(changedTiddlers);\n\n if (this.isViewSwitched(changedTiddlers) || this.hasChangedAttributes() // widget html code changed\n || updates[env.path.options] // global options changed\n || changedTiddlers[this.view.getRoot()] // view's main config changed\n ) {\n\n this.logger('warn', 'View switched config changed');\n\n this.isPreventZoomOnNextUpdate = false;\n this.view = this.getView(true);\n this.reloadRefreshTriggers();\n this.rebuildEditorBar();\n this.reloadBackgroundImage();\n this.initAndRenderGraph(this.graphDomNode);\n } else {\n // view has not been switched\n\n // give the view a chance to refresh itself\n var isViewUpdated = this.view.update(updates);\n\n if (isViewUpdated) {\n\n this.logger('warn', 'View components modified');\n this.rebuildGraph({ resetFocus: { delay: 1000, duration: 1000 } });\n } else {\n // neither view switch or view modification\n\n if (updates[env.path.nodeTypes] || this.hasChangedElements(changedTiddlers)) {\n this.rebuildGraph();\n }\n\n // give children a chance to update themselves\n this.refreshChildren(changedTiddlers);\n }\n }\n }\n }, {\n key: 'hidePopups',\n value: function hidePopups(delay, isForce) {\n\n this.tooltip.hide(delay, isForce);\n this.contextMenu.hide(0, true);\n }\n\n /**\n * Refresh-triggers are tiddlers whose mere occurrence in the\n * changedTiddlers list forces tiddlymap to reassert\n * whether a filter expression returns the same set of matches as it\n * is currently displayed in the graph.\n *\n * The raison d'etre for refresh-triggers is that a filter may contain\n * implicit text-references or variables that may require a filter to be\n * reasserted even though, the filter expression itself did not change.\n *\n * For example a filter `[field:title{$:/HistoryList!!current-tiddler}]`\n * requires a `$:/HistoryList` refresh trigger to be added to the view so\n * everytime the `$:/HistoryList` tiddler changes, the filter gets\n * reasserted.\n */\n\n }, {\n key: 'reloadRefreshTriggers',\n value: function reloadRefreshTriggers() {\n\n // remove old triggers (if there are any)\n this.callbackManager.remove(this.refreshTriggers);\n\n // load new trigger list either from attribute or view config\n var str = this.getAttr('refresh-triggers') || this.view.getConfig('refresh-triggers');\n this.refreshTriggers = $tw.utils.parseStringArray(str) || [];\n\n this.logger('debug', 'Registering refresh trigger', this.refreshTriggers);\n\n // TODO: not nice, if more than one trigger changed it\n // will cause multiple reassertments\n for (var i = this.refreshTriggers.length; i--;) {\n this.callbackManager.add(this.refreshTriggers[i], this.handleTriggeredRefresh, false);\n }\n }\n\n /**\n * Calling this method will cause the graph to be rebuild, which means\n * the graph data is refreshed. A rebuild of the graph will always\n * cause the network to stabilize again.\n *\n * @param {Hashmap} [resetFocus=null] - If not false or null,\n * this object requires two properties to be set: `delay` (the\n * time to wait before starting the fit), `duration` (the length\n * of the fit animation).\n */\n\n }, {\n key: 'rebuildGraph',\n value: function rebuildGraph() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n resetFocus = _ref.resetFocus;\n\n if (_utils2.default.isPreviewed(this)) {\n\n return;\n }\n\n this.logger('debug', 'Rebuilding graph');\n\n this.hidePopups(0, true);\n\n // always reset to allow handling of stabilized-event!\n this.hasNetworkStabilized = false;\n\n var changes = this.rebuildGraphData();\n\n if (changes.changedNodes.withoutPosition.length) {\n\n // force resetFocus\n resetFocus = resetFocus || { delay: 1000, duration: 1000 };\n\n if (!this.view.isEnabled('physics_mode')) {\n\n // in static mode we need to ensure that objects spawn\n // near center so we need to set physics from\n // zero to something. Yes, we override the users\n // central gravity value… who cares about central\n // gravity in static mode anyways.\n var physics = this.visOptions.physics;\n physics[physics.solver].centralGravity = 0.25;\n this.network.setOptions(this.visOptions);\n }\n }\n\n if (!_utils2.default.hasElements(this.graphData.nodesById)) {\n return;\n }\n\n if (resetFocus) {\n\n if (!this.isPreventZoomOnNextUpdate) {\n\n // see https://github.com/almende/vis/issues/987#issuecomment-113226216\n // see https://github.com/almende/vis/issues/939\n this.network.stabilize();\n this.resetFocus = resetFocus;\n }\n\n this.isPreventZoomOnNextUpdate = false;\n }\n }\n\n /**\n * WARNING: Do not change this functionname as it is used by the\n * caretaker's routinely checkups.\n */\n\n }, {\n key: 'getContainer',\n value: function getContainer() {\n\n return this.domNode;\n }\n\n /**\n *\n */\n\n }, {\n key: 'rebuildGraphData',\n value: function rebuildGraphData() {\n\n $tm.start('Reloading Network');\n\n var graph = $tm.adapter.getGraph({ view: this.view });\n\n var changedNodes = _utils2.default.refreshDataSet(this.graphData.nodes, // dataset\n graph.nodes // new nodes\n );\n\n var changedEdges = _utils2.default.refreshDataSet(this.graphData.edges, // dataset\n graph.edges // new edges\n );\n\n // create lookup tables\n\n this.graphData.nodesById = graph.nodes;\n this.graphData.edgesById = graph.edges;\n\n // TODO: that's a performance killer. this should be loaded when\n // the search is actually used!\n // update: Careful when refactoring, some modules are using this…\n _utils2.default.setField('$:/temp/tmap/nodes/' + this.view.getLabel(), 'list', $tm.adapter.getTiddlersByIds(graph.nodes));\n\n $tm.stop('Reloading Network');\n\n return { changedEdges: changedEdges, changedNodes: changedNodes };\n }\n }, {\n key: 'isViewBound',\n value: function isViewBound() {\n\n return _utils2.default.startsWith(this.getViewHolderRef(), $tm.path.localHolders);\n }\n\n /**\n * A view is switched, if the holder was changed.\n * Also if a view suddenly doesn't exist anymore we consider this\n * a trigger for a view change.\n */\n\n }, {\n key: 'isViewSwitched',\n value: function isViewSwitched(changedTiddlers) {\n\n return !_ViewAbstraction2.default.exists(this.view) || changedTiddlers[this.getViewHolderRef()];\n }\n\n /**\n * A view is switched, if the holder was changed.\n */\n\n }, {\n key: 'hasChangedAttributes',\n value: function hasChangedAttributes() {\n\n return Object.keys(this.computeAttributes()).length;\n }\n\n /**\n * Rebuild or update the graph if one of the following is true:\n *\n * 1. A tiddler currently contained as node in the graph has been\n * deleted or modified. This also includes tiddlers that are\n * represented as neighbours in the graph.\n * 2. The neighbourhood is shown and a non-system tiddler has changed.\n * 3. A tiddler that matches the node filter has been modified\n * (not deleted).\n *\n * Since edges are stored in tiddlers themselves, any edge modification\n * is always accounted for as in this case the tiddler holding the\n * edge would be included as changed tiddler.\n *\n * @param {Hashmap<TiddlerReference, *>} changedTiddlers - A list of\n * tiddler changes.\n *\n * @return {boolean} true if the graph needs a refresh.\n */\n\n }, {\n key: 'hasChangedElements',\n value: function hasChangedElements(changedTiddlers) {\n\n var maybeMatches = [];\n var inGraph = this.graphData.nodesById;\n var isShowNeighbourhood = this.view.isEnabled('neighbourhood_scope');\n\n for (var tRef in changedTiddlers) {\n\n if (_utils2.default.isSystemOrDraft(tRef)) {\n\n continue;\n }\n\n if (inGraph[$tm.adapter.getId(tRef)] || isShowNeighbourhood) {\n\n return true;\n }\n\n if (changedTiddlers[tRef].modified) {\n // may be a match so we store this and process it later\n maybeMatches.push(tRef);\n }\n }\n\n if (maybeMatches.length) {\n\n var nodeFilter = this.view.getNodeFilter('compiled');\n var matches = _utils2.default.getMatches(nodeFilter, maybeMatches);\n\n return !!matches.length;\n }\n }\n\n /**\n * Rebuild the graph\n *\n * @see http://visjs.org/docs/network.html\n * @see http://visjs.org/docs/dataset.html\n */\n\n }, {\n key: 'initAndRenderGraph',\n value: function initAndRenderGraph(parent) {\n var _this3 = this;\n\n // make sure to destroy any previous instance\n if (this.network) {\n this._destructVis();\n }\n\n this.logger('info', 'Initializing and rendering the graph');\n\n if (!this.isInSidebar) {\n this.callbackManager.add('$:/state/sidebar', this.handleResizeEvent);\n }\n\n this.visOptions = this.getVisOptions();\n\n this.graphData = {\n nodes: new _vis2.default.DataSet(),\n edges: new _vis2.default.DataSet(),\n nodesById: _utils2.default.makeHashMap(),\n edgesById: _utils2.default.makeHashMap()\n };\n\n this.tooltip.setEnabled(_utils2.default.isTrue($tm.config.sys.popups.enabled, true));\n\n this.network = new _vis2.default.Network(parent, this.graphData, this.visOptions);\n // after vis.Network has been instantiated, we fetch a reference to\n // the canvas element\n this.canvas = parent.getElementsByTagName('canvas')[0];\n this.networkDomNode = _utils2.default.getFirstElementByClassName('vis-network', parent, true);\n // just to be sure\n this.canvas.tabIndex = 0;\n\n for (var event in this.visListeners) {\n this.network.on(event, this.visListeners[event].bind(this));\n }\n\n this.addGraphButtons({\n 'fullscreen-button': function fullscreenButton() {\n _this3.toggleEnlargedMode('fullscreen');\n },\n 'halfscreen-button': function halfscreenButton() {\n _this3.toggleEnlargedMode('halfscreen');\n }\n });\n\n _utils2.default.setDomListeners('add', this.canvas, this.canvasDomListeners);\n\n this.reloadBackgroundImage();\n this.rebuildGraph({\n resetFocus: { delay: 0, duration: 0 }\n });\n this.handleResizeEvent();\n this.canvas.focus();\n }\n }, {\n key: 'handleCanvasKeyup',\n value: function handleCanvasKeyup(ev) {\n var _this4 = this;\n\n var nodeIds = this.network.getSelectedNodes();\n\n // this.isCtrlKeyDown = ev.ctrlKey;\n\n if (ev.ctrlKey) {\n // ctrl key is hold down\n ev.preventDefault();\n\n if (ev.keyCode === 88) {\n // x\n if (this.editorMode) {\n this.handleAddNodesToClipboard('move');\n } else {\n $tm.notify('Map is read only!');\n }\n } else if (ev.keyCode === 67) {\n // c\n this.handleAddNodesToClipboard('copy');\n } else if (ev.keyCode === 86) {\n // v\n this.handlePasteNodesFromClipboard();\n } else if (ev.keyCode === 65) {\n // a\n var allNodes = Object.keys(this.graphData.nodesById);\n this.network.selectNodes(allNodes);\n } else if (ev.keyCode === 49 || ev.keyCode === 50) {\n // 1 || 2\n if (nodeIds.length !== 1) return;\n\n var role = ev.keyCode === 49 ? 'from' : 'to';\n $tm.notify(_utils2.default.ucFirst(role) + '-part selected');\n\n this.conVector[role] = nodeIds[0];\n if (this.conVector.from && this.conVector.to) {\n // create the edge\n this.handleConnectionEvent(this.conVector, function () {\n // reset both properties, regardless whether confirmed\n _this4.conVector = { from: null, to: null };\n });\n }\n }\n } else {\n // ctrl is not pressed\n\n if (ev.keyCode === 13) {\n // ENTER\n\n if (nodeIds.length !== 1) return;\n\n this.openTiddlerWithId(nodeIds[0]);\n }\n }\n }\n }, {\n key: 'handleCanvasKeydown',\n value: function handleCanvasKeydown(ev) {\n\n if (ev.keyCode === 46) {\n // delete\n ev.preventDefault();\n this.handleRemoveElements(this.network.getSelection());\n }\n }\n }, {\n key: 'handleDeleteElement',\n value: function handleDeleteElement(ev) {\n\n var id = ev.paramObject.id;\n var elements = id ? [id] : this.network.getSelectedNodes();\n\n this.handleRemoveElements({ nodes: elements });\n }\n\n /**\n *\n * @param ev\n */\n\n }, {\n key: 'handleCanvasMouseMove',\n value: function handleCanvasMouseMove(ev) {\n var network = this.network;\n\n\n if (!(ev.ctrlKey && ev.buttons)) {\n\n if (this.selectRect) {\n this.selectRect = null;\n var _selectedNodes = network.getSelectedNodes();\n $tm.notify(_selectedNodes.length + ' nodes selected');\n network.redraw();\n }\n\n return;\n }\n\n // prevent vis' network drag if ctrl key and mouse button is pressed\n ev.preventDefault();\n ev.stopPropagation();\n\n if (!this.domNode.contains(ev.target)) {\n // since we are using a global mouse listener, we need to check whether\n // we are actually inside our widget, so we stop updating the selectRect\n return;\n }\n\n var mouse = network.DOMtoCanvas({ x: ev.offsetX, y: ev.offsetY });\n\n if (!this.selectRect) {\n this.selectRect = new _SelectionRectangle2.default(mouse.x, mouse.y);\n }\n\n // register new coordinates\n this.selectRect.span(mouse.x, mouse.y);\n // retrieve current mouse positions\n var nodePositions = network.getPositions();\n // we include previously selected nodes in the new set\n var selectedNodes = network.getSelectedNodes();\n\n for (var id in nodePositions) {\n\n if (this.selectRect.isPointWithin(nodePositions[id]) && !_utils2.default.inArray(id, selectedNodes)) {\n selectedNodes.push(id);\n }\n }\n\n network.selectNodes(selectedNodes);\n this.assignActiveStyle(selectedNodes);\n\n network.redraw();\n }\n\n //https://github.com/almende/vis/blob/111c9984bc4c1870d42ca96b45d90c13cb92fe0a/lib/network/modules/InteractionHandler.js\n\n }, {\n key: 'handleCanvasScroll',\n value: function handleCanvasScroll(ev) {\n\n var isZoomAllowed = !!(this.isInSidebar || // e.g. the map editor in the sidebar\n ev.ctrlKey || this.enlargedMode || this.clickToUse && this.networkDomNode.classList.contains('vis-active'));\n\n var interaction = this.visOptions.interaction;\n\n var isVisSettingInSync = isZoomAllowed === interaction.zoomView;\n\n if (isZoomAllowed || !isVisSettingInSync) {\n ev.preventDefault();\n }\n\n if (!isVisSettingInSync) {\n // prevent visjs from reacting to this event as we first need to sync states\n ev.stopPropagation();\n\n interaction.zoomView = isZoomAllowed;\n this.network.setOptions({ interaction: { zoomView: isZoomAllowed } });\n\n return false;\n }\n }\n\n /**\n * Called when the user click on the canvas with the right\n * mouse button. A context menu is opened.\n */\n\n }, {\n key: 'handleContextMenu',\n value: function handleContextMenu(ev) {\n var _this5 = this;\n\n ev.preventDefault();\n\n var network = this.network;\n\n\n this.hidePopups(0, true);\n\n var nodeId = network.getNodeAt({ x: ev.offsetX, y: ev.offsetY });\n if (!nodeId) return;\n\n // ids of selected nodes\n var selectedNodes = network.getSelectedNodes();\n\n if (!_utils2.default.inArray(nodeId, selectedNodes)) {\n // unselect other nodes and select this one instead…\n selectedNodes = [nodeId];\n network.selectNodes(selectedNodes);\n }\n\n this.contextMenu.show(selectedNodes, function (selectedNodes, div) {\n\n var mode = selectedNodes.length > 1 ? 'multi' : 'single';\n var tRef = '$:/plugins/felixhayashi/tiddlymap/editor/contextMenu/node';\n\n _utils2.default.registerTransclude(_this5, 'contextMenuWidget', tRef);\n _this5.contextMenuWidget.setVariable('mode', mode);\n _this5.contextMenuWidget.render(div);\n });\n }\n }, {\n key: 'handleWidgetKeyup',\n value: function handleWidgetKeyup(ev) {}\n }, {\n key: 'handleWidgetKeydown',\n value: function handleWidgetKeydown(ev) {\n\n if (ev.ctrlKey) {\n // ctrl key is hold down\n ev.preventDefault();\n\n if (ev.keyCode === 70) {\n // f\n ev.preventDefault();\n\n var focusButtonStateTRef = this.widgetPopupsPath + '/focus';\n _utils2.default.setText(focusButtonStateTRef, _utils2.default.getText(focusButtonStateTRef) ? '' : '1');\n\n // note: it is ok to focus the graph right after this,\n // if the focus button is activated it will steal the focus anyway\n } else {\n\n return;\n }\n } else if (ev.keyCode === 120) {\n // F9\n ev.preventDefault();\n this.toggleEnlargedMode('halfscreen');\n } else if (ev.keyCode === 121) {\n // F10\n ev.preventDefault();\n this.toggleEnlargedMode('fullscreen');\n } else if (ev.keyCode === 27) {\n // ESC\n ev.preventDefault();\n\n _utils2.default.deleteByPrefix(this.widgetPopupsPath);\n } else {\n return;\n }\n\n this.canvas.focus();\n }\n }, {\n key: 'handlePasteNodesFromClipboard',\n value: function handlePasteNodesFromClipboard() {\n\n if (!this.editorMode) {\n $tm.notify('Map is read only!');\n return;\n }\n\n if (!$tm.clipBoard || $tm.clipBoard.type !== 'nodes') {\n $tm.notify('TiddlyMap clipboad is empty!');\n }\n\n var nodes = $tm.clipBoard.nodes;\n var ids = Object.keys(nodes);\n\n for (var i = ids.length; i--;) {\n\n var id = ids[i];\n\n if (this.graphData.nodesById[id]) {\n // node already present in this view\n continue;\n }\n\n this.view.addNode(nodes[id]);\n\n // paste nodes so we can select them!\n this.graphData.nodes.update({ id: id });\n }\n\n this.network.selectNodes(ids);\n\n this.rebuildGraph({ resetFocus: { delay: 0, duration: 0 } });\n\n $tm.notify('pasted ' + ids.length + ' nodes into map.');\n }\n }, {\n key: 'handleAddNodesToClipboard',\n value: function handleAddNodesToClipboard(mode) {\n\n var nodeIds = this.network.getSelectedNodes();\n\n if (!nodeIds.length) {\n return;\n }\n\n $tm.clipBoard = {\n type: 'nodes',\n nodes: this.graphData.nodes.get(nodeIds, { returnType: 'Object' })\n };\n\n $tm.notify('Copied ' + nodeIds.length + ' nodes to clipboard');\n\n if (mode === 'move') {\n for (var i = nodeIds.length; i--;) {\n this.view.removeNode(nodeIds[i]);\n }\n }\n\n // prevent zoom\n this.isPreventZoomOnNextUpdate = true;\n }\n\n /**\n * @todo Instead of redrawing the whole graph when an edge or node is\n * added it may be worth considering only getting the element from the\n * adapter and directly inserting it into the graph and *avoid* a\n * reload of the graph via `rebuildGraph`!\n *\n * @todo: too much recomputation -> outsource\n */\n\n }, {\n key: 'getVisOptions',\n value: function getVisOptions() {\n var _this6 = this;\n\n // merge options\n var globalOptions = $tm.config.vis;\n var localOptions = _utils2.default.parseJSON(this.view.getConfig('vis'));\n var options = _utils2.default.merge({}, globalOptions, localOptions);\n\n options.clickToUse = this.clickToUse;\n options.manipulation.enabled = !!this.editorMode;\n\n options.manipulation.deleteNode = function (data, callback) {\n _this6.handleRemoveElements(data);\n _this6.resetVisManipulationBar(callback);\n };\n\n options.manipulation.deleteEdge = function (data, callback) {\n _this6.handleRemoveElements(data);\n _this6.resetVisManipulationBar(callback);\n };\n\n options.manipulation.addEdge = function (data, callback) {\n _this6.handleConnectionEvent(data);\n _this6.resetVisManipulationBar(callback);\n };\n\n options.manipulation.addNode = function (data, callback) {\n _this6.handleInsertNode(data);\n _this6.resetVisManipulationBar(callback);\n };\n\n options.manipulation.editNode = function (data, callback) {\n _this6.handleEditNode(data);\n _this6.resetVisManipulationBar(callback);\n };\n\n options.interaction.zoomView = !!(this.isInSidebar || this.enlargedMode);\n\n // not allowed\n options.manipulation.editEdge = false;\n\n // make sure the actual solver is an object\n var physics = options.physics;\n physics[physics.solver] = physics[physics.solver] || {};\n\n physics.stabilization.iterations = 1000;\n\n this.logger('debug', 'Loaded graph options', options);\n\n return options;\n }\n }, {\n key: 'resetVisManipulationBar',\n value: function resetVisManipulationBar(visCallback) {\n\n if (visCallback) {\n visCallback(null);\n }\n\n this.network.disableEditMode();\n this.network.enableEditMode();\n }\n }, {\n key: 'isVisInEditMode',\n value: function isVisInEditMode() {\n\n return this.graphDomNode.getElementsByClassName('vis-button vis-back').length > 0;\n }\n\n /**\n * Create an empty view. A dialog is opened that asks the user how to\n * name the view. The view is then registered as current view.\n */\n\n }, {\n key: 'handleCreateView',\n value: function handleCreateView() {\n var _this7 = this;\n\n var args = {\n view: this.view.getLabel()\n };\n\n $tm.dialogManager.open('createView', args, function (isConfirmed, outTObj) {\n\n if (!isConfirmed) return;\n\n var label = _utils2.default.getField(outTObj, 'name');\n var isClone = _utils2.default.getField(outTObj, 'clone', false);\n\n if (_ViewAbstraction2.default.exists(label)) {\n\n $tm.notify('Forbidden! View already exists!');\n\n return;\n }\n\n if (isClone && _this7.view.isLiveView()) {\n $tm.notify('Forbidden to clone the live view!');\n return;\n }\n\n var newView = new _ViewAbstraction2.default(label, {\n isCreate: true,\n protoView: isClone ? _this7.view : null\n });\n\n _this7.setView(newView);\n });\n }\n }, {\n key: 'handleRenameView',\n value: function handleRenameView() {\n var _this8 = this;\n\n if (this.view.isLocked()) {\n\n $tm.notify('Forbidden!');\n return;\n }\n\n var references = this.view.getOccurrences();\n\n var args = {\n count: references.length.toString(),\n refFilter: _utils2.default.joinAndWrap(references, '[[', ']]')\n };\n\n $tm.dialogManager.open('renameView', args, function (isConfirmed, outTObj) {\n\n if (!isConfirmed) {\n return;\n }\n\n var label = _utils2.default.getText(outTObj);\n\n if (!label) {\n\n $tm.notify('Invalid name!');\n } else if (_ViewAbstraction2.default.exists(label)) {\n\n $tm.notify('Forbidden! View already exists!');\n } else {\n\n _this8.view.rename(label);\n _this8.setView(_this8.view);\n }\n });\n }\n }, {\n key: 'handleEditView',\n value: function handleEditView() {\n var _this9 = this;\n\n var visInherited = JSON.stringify($tm.config.vis);\n var data = this.graphData;\n\n var viewConfig = this.view.getConfig();\n\n var preselects = {\n 'filter.prettyNodeFltr': this.view.getNodeFilter('pretty'),\n 'filter.prettyEdgeFltr': this.view.getEdgeTypeFilter('pretty'),\n 'vis-inherited': visInherited\n };\n\n var args = {\n view: this.view.getLabel(),\n createdOn: this.view.getCreationDate(true),\n numberOfNodes: Object.keys(data.nodesById).length.toString(),\n numberOfEdges: Object.keys(data.edgesById).length.toString(),\n dialog: {\n preselects: $tw.utils.extend({}, viewConfig, preselects)\n }\n };\n\n $tm.dialogManager.open('configureView', args, function (isConfirmed, outTObj) {\n\n if (!isConfirmed) {\n return;\n }\n\n var config = _utils2.default.getPropertiesByPrefix(outTObj.fields, 'config.', true);\n\n // ATTENTION: needs to be tested before applying new config!\n var prvBg = _this9.view.getConfig('background_image');\n\n _this9.view.setConfig(config);\n if (config['physics_mode'] && !_this9.view.isEnabled('physics_mode')) {\n // when not in physics mode, store positions\n // to prevent floating afterwards\n _this9.view.saveNodePositions(_this9.network.getPositions());\n }\n\n var curBg = _this9.view.getConfig('background_image');\n if (curBg && curBg !== prvBg) {\n $tm.notify('Background changed! You may need to zoom out a bit.');\n }\n\n var nf = _utils2.default.getField(outTObj, 'filter.prettyNodeFltr', '');\n var eTf = _utils2.default.getField(outTObj, 'filter.prettyEdgeFltr', '');\n\n _this9.view.setNodeFilter(nf);\n _this9.view.setEdgeTypeFilter(eTf);\n });\n }\n\n /**\n * Triggers a download dialog where the user can store the canvas\n * as png on his/her harddrive.\n */\n\n }, {\n key: 'handleSaveCanvas',\n value: function handleSaveCanvas() {\n var _this10 = this;\n\n var tempImagePath = '$:/temp/tmap/snapshot';\n this.createAndSaveSnapshot(tempImagePath);\n var defaultName = _utils2.default.getSnapshotTitle(this.view.getLabel(), 'png');\n\n var args = {\n dialog: {\n snapshot: tempImagePath,\n width: this.canvas.width.toString(),\n height: this.canvas.height.toString(),\n preselects: {\n name: defaultName,\n action: 'download'\n }\n }\n };\n\n $tm.dialogManager.open('saveCanvas', args, function (isConfirmed, outTObj) {\n if (!isConfirmed) return;\n\n // allow the user to override the default name or if name is\n // empty use the original default name\n defaultName = outTObj.fields.name || defaultName;\n\n var action = outTObj.fields.action;\n\n if (action === 'download') {\n _this10.handleDownloadSnapshot(defaultName);\n } else if (action === 'wiki') {\n _utils2.default.cp(tempImagePath, defaultName, true);\n _this10.dispatchEvent({\n type: 'tm-navigate', navigateTo: defaultName\n });\n } else if (action === 'placeholder') {\n _this10.view.addPlaceholder(tempImagePath);\n }\n\n // in any case\n $tw.wiki.deleteTiddler('$:/temp/tmap/snapshot');\n });\n }\n }, {\n key: 'handleDownloadSnapshot',\n value: function handleDownloadSnapshot(title) {\n\n var a = this.document.createElement('a');\n var label = this.view.getLabel();\n a.download = title || _utils2.default.getSnapshotTitle(label, 'png');\n a.href = this.getSnapshot();\n\n // we cannot simply call click() on <a>; chrome is cool with it but\n // firefox requires us to create a mouse event…\n var event = new MouseEvent('click');\n a.dispatchEvent(event);\n }\n }, {\n key: 'createAndSaveSnapshot',\n value: function createAndSaveSnapshot(title) {\n\n var tRef = title || this.view.getRoot() + '/snapshot';\n $tw.wiki.addTiddler(new $tw.Tiddler({\n title: tRef,\n type: 'image/png',\n text: this.getSnapshot(true),\n modified: new Date()\n }));\n\n return tRef;\n }\n }, {\n key: 'getSnapshot',\n value: function getSnapshot(stripPreamble) {\n\n var data = this.canvas.toDataURL('image/png');\n\n return stripPreamble ? _utils2.default.getWithoutPrefix(data, 'data:image/png;base64,') : data;\n }\n }, {\n key: 'handleDeleteView',\n value: function handleDeleteView() {\n var _this11 = this;\n\n var viewname = this.view.getLabel();\n\n if (this.view.isLocked()) {\n\n $tm.notify('Forbidden!');\n return;\n }\n\n // regex is non-greedy\n\n var references = this.view.getOccurrences();\n if (references.length) {\n\n var fields = {\n count: references.length.toString(),\n refFilter: _utils2.default.joinAndWrap(references, '[[', ']]')\n };\n\n $tm.dialogManager.open('cannotDeleteViewDialog', fields);\n\n return;\n }\n\n var message = '\\n You are about to delete the view \\'\\'' + viewname + '\\'\\'\\n (no tiddler currently references this view).\\n ';\n\n this.openStandardConfirmDialog(function (isConfirmed) {\n // TODO: this dialog needs an update\n\n if (!isConfirmed) {\n return;\n }\n\n _this11.view.destroy();\n _this11.setView($tm.misc.defaultViewLabel);\n var msg = 'view \"' + viewname + '\\' deleted';\n _this11.logger('debug', msg);\n $tm.notify(msg);\n }, message);\n }\n\n /**\n * This will rebuild the graph after a trigger has been activated.\n *\n * Prior to TiddlyMap v0.9, an additional check was performed\n * to verify, if the graph had actually changed before rebuilding\n * the graph. This check, however, was an overkill and as such removed.\n */\n\n }, {\n key: 'handleTriggeredRefresh',\n value: function handleTriggeredRefresh(trigger) {\n\n this.logger('log', trigger, 'Triggered a refresh');\n\n // special case for the live tab\n if (this.id === 'live_tab') {\n var curTiddler = _utils2.default.getTiddler(_utils2.default.getText(trigger));\n if (curTiddler) {\n var view = curTiddler.fields['tmap.open-view'] || $tm.config.sys.liveTab.fallbackView;\n if (view && view !== this.view.getLabel()) {\n this.setView(view);\n return;\n }\n }\n }\n\n this.rebuildGraph({\n resetFocus: {\n delay: 1000,\n duration: 1000\n }\n });\n }\n\n /**\n * Called by vis when the user tries to delete nodes or edges.\n * The action is delegated to subhandlers.\n *\n * @param {Array<Id>} nodes - Removed edges.\n * @param {Array<Id>} edges - Removed nodes.\n */\n\n }, {\n key: 'handleRemoveElements',\n value: function handleRemoveElements(_ref2) {\n var nodes = _ref2.nodes,\n edges = _ref2.edges;\n\n\n if (nodes.length) {\n // the adapter also removes edges when nodes are removed.\n this.handleRemoveNodes(nodes);\n } else if (edges.length) {\n this.handleRemoveEdges(edges);\n }\n\n this.resetVisManipulationBar();\n }\n }, {\n key: 'handleRemoveEdges',\n value: function handleRemoveEdges(edgeIds) {\n\n $tm.adapter.deleteEdges(this.graphData.edges.get(edgeIds));\n $tm.notify('edge' + (edgeIds.length > 1 ? 's' : '') + ' removed');\n }\n\n /**\n * Handler that guides the user through the process of deleting a node\n * from the graph. The nodes may be removed from the filter (if possible)\n * or from the system.\n *\n * Note: this should not trigger a zoom.\n */\n\n }, {\n key: 'handleRemoveNodes',\n value: function handleRemoveNodes(nodeIds) {\n var _this12 = this;\n\n var tiddlers = $tm.adapter.getTiddlersByIds(nodeIds);\n var params = {\n 'count': nodeIds.length.toString(),\n 'tiddlers': $tw.utils.stringifyList(tiddlers),\n dialog: {\n preselects: {\n 'delete-from': 'filter'\n }\n }\n };\n\n $tm.dialogManager.open('deleteNodeDialog', params, function (isConfirmed, outTObj) {\n\n if (!isConfirmed) return;\n\n var deletionCount = 0;\n\n for (var i = nodeIds.length; i--;) {\n var success = _this12.view.removeNode(nodeIds[i]);\n if (success) {\n deletionCount++;\n }\n }\n\n if (outTObj.fields['delete-from'] === 'system') {\n\n // will also delete edges\n $tm.adapter.deleteNodes(nodeIds);\n deletionCount = nodeIds.length; // we just say so ;)\n }\n\n // prevent zoom\n _this12.isPreventZoomOnNextUpdate = true;\n\n $tm.notify('\\n Removed ' + deletionCount + '\\n of ' + nodeIds.length + '\\n from ' + outTObj.fields['delete-from'] + '\\n ');\n });\n }\n\n /**\n * Calling this function will toggle the enlargement of the map\n * instance. Markers need to be added at various places to ensure the\n * map stretches properly. This includes marking ancestor dom nodes\n * to be able to shift the stacking context.\n *\n * @param {string} type - either 'halfscreen' or 'fullscreen'.\n */\n\n }, {\n key: 'toggleEnlargedMode',\n value: function toggleEnlargedMode(type) {\n\n if (!this.isInSidebar && type === 'halfscreen') {\n return;\n }\n\n this.logger('log', 'Toggled graph enlargement');\n\n var enlargedMode = this.enlargedMode;\n\n // in any case, exit enlarged mode if active\n if (enlargedMode) {\n\n // reset click to use\n this.network.setOptions({ clickToUse: this.clickToUse });\n\n // remove markers\n _utils2.default.findAndRemoveClassNames(['tmap-has-' + enlargedMode + '-widget', 'tmap-' + enlargedMode]);\n\n // reset flag\n this.enlargedMode = null;\n document.body.scrollTop = this.scrollTop;\n }\n\n if (!enlargedMode || enlargedMode !== type && (type === 'fullscreen' || type === 'halfscreen' && !this.isInSidebar)) {\n\n this.scrollTop = document.body.scrollTop;\n\n this.enlargedMode = type;\n\n var pContainer = this.isInSidebar ? this.sidebar : _utils2.default.getFirstElementByClassName('tc-story-river');\n\n $tw.utils.addClass(this.document.body, 'tmap-has-' + type + '-widget');\n $tw.utils.addClass(pContainer, 'tmap-has-' + type + '-widget');\n $tw.utils.addClass(this.domNode, 'tmap-' + type);\n\n // disable click to use by force\n this.network.setOptions({ clickToUse: false });\n\n $tm.notify('Toggled ' + type + ' mode');\n }\n\n // always do resize\n this.handleResizeEvent();\n }\n }, {\n key: 'handleGenerateWidget',\n value: function handleGenerateWidget(event) {\n\n $tw.rootWidget.dispatchEvent({\n type: 'tmap:tm-generate-widget',\n paramObject: { view: this.view.getLabel() }\n });\n }\n }, {\n key: 'handleSetCentralTopic',\n value: function handleSetCentralTopic(_ref3) {\n var paramObject = _ref3.paramObject;\n\n\n var nodeId = paramObject.id || this.network.getSelectedNodes()[0];\n\n if (nodeId === this.view.getConfig('central-topic')) {\n nodeId = '';\n }\n\n this.view.setCentralTopic(nodeId);\n }\n\n /**\n * Called by vis when the graph has stabilized itself.\n *\n * ATTENTION: never store positions in a view's map during stabilize\n * as this will affect other graphs positions and will cause recursion!\n * Storing positions inside vis' nodes is fine though\n */\n\n }, {\n key: 'handleVisStabilizedEvent',\n value: function handleVisStabilizedEvent(properties) {\n\n if (this.hasNetworkStabilized) {\n return;\n }\n\n this.hasNetworkStabilized = true;\n this.logger('log', 'Network stabilized after', properties.iterations, 'iterations');\n\n if (!this.view.isEnabled('physics_mode')) {\n // static mode\n\n // store positions if new nodes without position were added\n var nodes = this.graphData.nodesById;\n var idsOfNodesWithoutPosition = [];\n\n for (var id in nodes) {\n if (nodes[id].x === undefined) {\n idsOfNodesWithoutPosition.push(id);\n }\n }\n\n if (idsOfNodesWithoutPosition.length) {\n this.setNodesMoveable(idsOfNodesWithoutPosition, false);\n $tm.notify(idsOfNodesWithoutPosition.length + ' nodes were added to the graph');\n }\n\n // after storing positions, set gravity to zero again\n var physics = this.visOptions.physics;\n physics[physics.solver].centralGravity = 0;\n this.network.setOptions(this.visOptions);\n }\n\n if (this.resetFocus) {\n this.fitGraph(this.resetFocus.delay, this.resetFocus.duration);\n this.resetFocus = null;\n }\n }\n\n /**\n * Zooms on a specific node in the graph\n */\n\n }, {\n key: 'handleFocusNode',\n value: function handleFocusNode(_ref4) {\n var tRef = _ref4.param;\n\n\n this.network.focus($tm.adapter.getId(tRef), {\n scale: 1.5,\n animation: true\n });\n }\n\n /**\n * A zombie widget is a widget that is removed from the dom tree\n * but still referenced or still partly executed -- I mean\n * otherwise you couldn't call this function, right?\n *\n * If TiddlyMap is executed in a fake environment, the function\n * always returns true.\n */\n\n }, {\n key: 'isZombieWidget',\n value: function isZombieWidget() {\n\n return this.domNode.isTiddlyWikiFakeDom === true || !this.document.body.contains(this.getContainer());\n }\n\n /**\n * This method allows us to specify after what time and for how long\n * the zoom-to-fit process should be executed for a graph.\n *\n * @param {number} [delay=0] - How long to wait before starting to zoom.\n * @param {number} [duration=0] - After the delay, how long should it\n * take for the graph to be zoomed.\n */\n\n }, {\n key: 'fitGraph',\n value: function fitGraph() {\n var _this13 = this;\n\n var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\n // clear any existing fitting attempt\n clearTimeout(this.activeFitTimeout);\n\n var fit = function fit() {\n\n // happens when widget is removed after stabilize but before fit\n if (_this13.isZombieWidget()) {\n return;\n }\n\n // fixes #97\n _this13.network.redraw();\n\n _this13.network.fit({ // v4: formerly zoomExtent\n animation: {\n duration: duration,\n easingFunction: 'easeOutQuart'\n }\n });\n };\n\n this.activeFitTimeout = setTimeout(fit, delay);\n }\n\n /**\n * Spawns a dialog in which the user can specify node attributes.\n * Once the dialog is closed, the node is inserted into the current\n * view, unless the operation was cancelled.\n */\n\n }, {\n key: 'handleInsertNode',\n value: function handleInsertNode(node) {\n var _this14 = this;\n\n $tm.dialogManager.open('addNodeToMap', {}, function (isConfirmed, outTObj) {\n\n if (!isConfirmed) {\n return;\n }\n\n var tRef = _utils2.default.getField(outTObj, 'draft.title');\n\n if (_utils2.default.tiddlerExists(tRef)) {\n\n // Todo: use graphData and test if node is match (!=neighbour)\n if (_utils2.default.isMatch(tRef, _this14.view.getNodeFilter('compiled'))) {\n\n $tm.notify('Node already exists');\n\n return;\n } else {\n\n node = $tm.adapter.makeNode(tRef, node);\n _this14.view.addNode(node);\n }\n } else {\n\n var tObj = new $tw.Tiddler(outTObj, { 'draft.title': null });\n\n node.label = tRef;\n $tm.adapter.insertNode(node, _this14.view, tObj);\n }\n\n // prevent zoom\n _this14.isPreventZoomOnNextUpdate = true;\n });\n }\n\n /**\n * Open the node editor to style the node.\n */\n\n }, {\n key: 'handleEditNode',\n value: function handleEditNode(node) {\n var _this15 = this;\n\n var tRef = $tm.tracker.getTiddlerById(node.id);\n var tObj = _utils2.default.getTiddler(tRef);\n var globalDefaults = JSON.stringify($tm.config.vis);\n var localDefaults = this.view.getConfig('vis');\n var nodes = {};\n nodes[node.id] = node;\n var nodeStylesByTRef = $tm.adapter.getInheritedNodeStyles(nodes);\n var groupStyles = JSON.stringify(nodeStylesByTRef[tRef]);\n var globalNodeStyle = JSON.stringify(_utils2.default.merge({}, { color: tObj.fields['color'] }, _utils2.default.parseJSON(tObj.fields['tmap.style'])));\n\n var viewLabel = this.view.getLabel();\n\n // we copy the object since we intend to modify it.\n // NOTE: A deep copy would be needed if a nested property were modified\n // In that case, use $tw.utils.deepCopy.\n var nodeData = _extends({}, this.view.getNodeData(node.id));\n // we need to delete the positions so they are not reset when a user\n // resets the style…\n delete nodeData.x;\n delete nodeData.y;\n\n var args = {\n 'view': viewLabel,\n 'tiddler': tObj.fields.title,\n 'tidColor': tObj.fields['color'],\n 'tidIcon': tObj.fields[$tm.field.nodeIcon] || tObj.fields['tmap.fa-icon'],\n 'tidLabelField': 'global.' + $tm.field.nodeLabel,\n 'tidIconField': 'global.' + $tm.field.nodeIcon,\n dialog: {\n preselects: {\n 'inherited-global-default-style': globalDefaults,\n 'inherited-local-default-style': localDefaults,\n 'inherited-group-styles': groupStyles,\n 'global.tmap.style': globalNodeStyle,\n 'local-node-style': JSON.stringify(nodeData)\n }\n }\n };\n\n // function to iterate over attributes that shall be available\n // in the dialog.\n var addToPreselects = function addToPreselects(scope, store, keys) {\n for (var i = keys.length; i--;) {\n args.dialog.preselects[scope + '.' + keys[i]] = store[keys[i]] || '';\n }\n };\n\n // local values are retrieved from the view's node data store\n addToPreselects('local', nodeData, ['label', 'tw-icon', 'fa-icon', 'open-view']);\n\n // global values are taken from the tiddler's field object\n addToPreselects('global', tObj.fields, [$tm.field.nodeLabel, $tm.field.nodeIcon, 'tmap.fa-icon', 'tmap.open-view']);\n\n $tm.dialogManager.open('editNode', args, function (isConfirmed, outTObj) {\n\n if (!isConfirmed) return;\n\n var fields = outTObj.fields;\n\n // save or remove global individual style\n var global = _utils2.default.getPropertiesByPrefix(fields, 'global.', true);\n for (var p in global) {\n\n _utils2.default.setField(tRef, p, global[p] || undefined);\n }\n\n // save local individual data (style + config)\n var local = _utils2.default.getPropertiesByPrefix(fields, 'local.', true);\n\n // CAREFUL: Never change 'local-node-style' to 'local.node-style'\n // (with a dot) because it will get included in the loop!\n var data = _utils2.default.parseJSON(fields['local-node-style'], {});\n\n for (var _p in local) {\n data[_p] = local[_p] || undefined;\n }\n\n _this15.view.saveNodeStyle(node.id, data);\n\n _this15.isPreventZoomOnNextUpdate = true;\n });\n }\n\n /**\n * This handler is registered at and called by the vis network event\n * system.\n */\n\n }, {\n key: 'handleVisSingleClickEvent',\n value: function handleVisSingleClickEvent(properties) {\n\n var isActivated = _utils2.default.isTrue($tm.config.sys.singleClickMode);\n if (isActivated && !this.editorMode) {\n this.handleOpenMapElementEvent(properties);\n }\n }\n\n /**\n * This handler is registered at and called by the vis network event\n * system.\n *\n * @see Coordinates not passed on click/tap events within the properties object\n * @see https://github.com/almende/vis/issues/440\n *\n * @properties a list of nodes and/or edges that correspond to the\n * click event.\n */\n\n }, {\n key: 'handleVisDoubleClickEvent',\n value: function handleVisDoubleClickEvent(properties) {\n\n if (properties.nodes.length || properties.edges.length) {\n\n if (this.editorMode || !_utils2.default.isTrue($tm.config.sys.singleClickMode)) {\n\n this.handleOpenMapElementEvent(properties);\n }\n } else {\n // = clicked on an empty spot\n\n if (this.editorMode) {\n this.handleInsertNode(properties.pointer.canvas);\n }\n }\n }\n }, {\n key: 'handleOpenMapElementEvent',\n value: function handleOpenMapElementEvent(_ref5) {\n var nodes = _ref5.nodes,\n edges = _ref5.edges;\n\n\n if (nodes.length) {\n // clicked on a node\n\n var node = this.graphData.nodesById[nodes[0]];\n if (node['open-view']) {\n $tm.notify('Switching view');\n this.setView(node['open-view']);\n } else {\n this.openTiddlerWithId(nodes[0]);\n }\n } else if (edges.length) {\n // clicked on an edge\n\n this.logger('debug', 'Clicked on an Edge');\n var typeId = this.graphData.edgesById[edges[0]].type;\n this.handleEditEdgeType(typeId);\n } else {\n\n return;\n }\n\n this.hidePopups(0, true);\n }\n }, {\n key: 'handleEditEdgeType',\n value: function handleEditEdgeType(type) {\n\n if (!this.editorMode) return;\n\n var behaviour = $tm.config.sys.edgeClickBehaviour;\n if (behaviour !== 'manager') return;\n\n $tw.rootWidget.dispatchEvent({\n type: 'tmap:tm-manage-edge-types',\n paramObject: {\n type: type\n }\n });\n }\n }, {\n key: 'handleResizeEvent',\n\n\n /**\n * Listener will be removed if the parent is not part of the dom anymore\n *\n * @see https://groups.google.com/d/topic/tiddlywikidev/yuQB1KwlKx8/discussion [TW5] Is there a destructor for widgets?\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Node.contains\n */\n value: function handleResizeEvent(event) {\n\n if (this.isZombieWidget()) return;\n\n var height = this.getAttr('height');\n var width = this.getAttr('width');\n\n if (this.isInSidebar) {\n\n var rect = this.domNode.getBoundingClientRect();\n var distRight = 15;\n width = document.body.clientWidth - rect.left - distRight + 'px';\n\n var distBottom = parseInt(this.getAttr('bottom-spacing')) || 15;\n var calculatedHeight = window.innerHeight - rect.top;\n height = calculatedHeight - distBottom + 'px';\n }\n\n this.domNode.style.height = height || '300px';\n this.domNode.style.width = width;\n\n this.repaintGraph(); // redraw graph\n }\n\n /**\n * used to prevent nasty deletion as edges are not unselected when leaving vis\n */\n\n }, {\n key: 'handleClickEvent',\n value: function handleClickEvent(evt) {\n\n if (this.isZombieWidget() || !this.network) return;\n\n if (!this.graphDomNode.contains(evt.target)) {\n // clicked outside\n\n var selected = this.network.getSelection();\n if (selected.nodes.length || selected.edges.length) {\n this.logger('debug', 'Clicked outside; deselecting nodes/edges');\n // upstream bug: this.network.unselectAll() doesn't work\n this.network.selectNodes([]); // deselect nodes and edges\n this.resetVisManipulationBar();\n }\n } else {\n\n this.canvas.focus();\n }\n\n if (evt.button !== 2) {\n // not the right button\n this.contextMenu.hide(0, true);\n }\n }\n }, {\n key: 'handleVisSelectNode',\n value: function handleVisSelectNode(_ref6) {\n var nodes = _ref6.nodes;\n\n\n if (!this.isDraggingAllowed(nodes)) {\n return;\n }\n\n // assign selected style\n this.assignActiveStyle(nodes);\n }\n }, {\n key: 'isDraggingAllowed',\n value: function isDraggingAllowed(_ref7) {\n var nodes = _ref7.nodes;\n\n return this.editorMode || this.view.isEnabled('physics_mode');\n }\n\n /**\n * Assign some styles when the graph element becomes active, i.e.\n * it is selected or hovered over.\n *\n * @param {Id|Array<Id>} nodeIds - A single id or an Array of ids.\n */\n\n }, {\n key: 'assignActiveStyle',\n value: function assignActiveStyle(nodeIds) {\n\n if (!Array.isArray(nodeIds)) nodeIds = [nodeIds];\n\n var defaultColor = this.visOptions.nodes.color;\n\n // iterate over selected nodes\n for (var i = nodeIds.length; i--;) {\n var id = nodeIds[i];\n var node = this.graphData.nodesById[id];\n var colorObj = _utils2.default.merge({}, defaultColor, node.color);\n this.graphData.nodes.update({\n id: id,\n color: {\n highlight: colorObj,\n hover: colorObj\n }\n });\n }\n }\n }, {\n key: 'handleVisDeselectNode',\n value: function handleVisDeselectNode(properties) {}\n\n //~ var prevSelectedNodes = properties.previousSelection.nodes;\n //~ for (var i = prevSelectedNodes.length; i--;) {\n //~ };\n\n /**\n * Called by vis when the dragging of a node(s) has ended.\n * Vis passes an object containing event-related information.\n *\n * @param {Array<Id>} nodes - Array of ids of the nodes\n * that were being dragged.\n */\n\n }, {\n key: 'handleVisDragEnd',\n value: function handleVisDragEnd(_ref8) {\n var nodes = _ref8.nodes;\n\n\n if (!nodes.length) {\n return;\n }\n\n if (nodes.length === 1 && this.view.isEnabled('raster')) {\n var pos = this.network.getPositions()[nodes[0]];\n this.graphData.nodes.update(_extends({\n id: nodes[0]\n }, _utils2.default.getNearestRasterPosition(pos, parseInt(this.view.getConfig('raster')))));\n }\n\n // reset store\n this.draggedNode = null;\n\n // fix node again and store positions\n // if in static mode, fixing will be ignored\n this.setNodesMoveable(nodes, false);\n }\n\n /**\n *\n * @param context2d\n */\n\n }, {\n key: 'handleVisBeforeDrawing',\n value: function handleVisBeforeDrawing(context2d) {\n var view = this.view,\n network = this.network,\n backgroundImage = this.backgroundImage;\n\n\n if (backgroundImage) {\n context2d.drawImage(backgroundImage, 0, 0);\n }\n\n if (view.isEnabled('raster')) {\n _utils2.default.drawRaster(context2d, network.getScale(), network.getViewPosition(), parseInt(view.getConfig('raster')));\n }\n }\n\n /**\n *\n * @param context2d\n */\n\n }, {\n key: 'handleVisAfterDrawing',\n value: function handleVisAfterDrawing(context2d) {\n\n if (this.selectRect) {\n\n var rect = this.selectRect.getRect();\n\n context2d.beginPath();\n context2d.globalAlpha = 0.5;\n context2d.fillStyle = '#EAFFEF';\n context2d.fillRect.apply(context2d, _toConsumableArray(rect));\n\n context2d.beginPath();\n context2d.globalAlpha = 1;\n context2d.strokeStyle = '#B4D9BD';\n context2d.strokeRect.apply(context2d, _toConsumableArray(rect));\n }\n\n if (this.draggedNode && this.view.isEnabled('raster')) {\n\n var pos = this.network.getPositions()[this.draggedNode];\n var rPos = _utils2.default.getNearestRasterPosition(pos, parseInt(this.view.getConfig('raster')));\n\n context2d.strokeStyle = 'green';\n context2d.fillStyle = 'green';\n\n context2d.beginPath();\n context2d.moveTo(pos.x, pos.y);\n context2d.lineTo(rPos.x, rPos.y);\n context2d.stroke();\n context2d.beginPath();\n context2d.arc(rPos.x, rPos.y, 5, 0, Math.PI * 2);\n context2d.fill();\n }\n }\n\n /**\n * called by tooltip class when tooltip is displayed;\n */\n\n }, {\n key: 'constructTooltip',\n value: function constructTooltip(signature, div) {\n\n var ev = _utils2.default.parseJSON(signature);\n var id = ev.node || ev.edge;\n\n var text = null;\n var outType = 'text/html';\n var inType = 'text/vnd-tiddlywiki';\n\n if (ev.node) {\n // node\n\n var tRef = $tm.tracker.getTiddlerById(id);\n var tObj = _utils2.default.getTiddler(tRef);\n\n var descr = tObj.fields[$tm.field.nodeInfo];\n\n if (descr) {\n\n div.innerHTML = $tw.wiki.renderText(outType, inType, descr);\n } else if (tObj.fields.text) {\n\n // simply rendering the text is not sufficient as this prevents\n // us from updating the tooltip content on refresh. So we need\n // to create a temporary widget that is registered to the dom\n // node passed by the tooltip.\n\n _utils2.default.registerTransclude(this, 'tooltipWidget', tRef);\n this.tooltipWidget.setVariable('tv-tiddler-preview', 'yes');\n this.tooltipWidget.render(div);\n } else {\n\n div.innerHTML = tRef;\n }\n } else {\n // edge\n\n var edge = this.graphData.edgesById[id];\n var type = $tm.indeces.allETy[edge.type];\n\n if (type.description) {\n text = $tw.wiki.renderText(outType, inType, type.description);\n }\n\n div.innerHTML = text || type.label || type.id;\n }\n }\n }, {\n key: 'handleVisHoverElement',\n value: function handleVisHoverElement(ev) {\n\n if ($tm.mouse.buttons) return;\n\n //~ this.graphDomNode.style.cursor = 'pointer';\n\n var id = ev.node || ev.edge;\n var signature = JSON.stringify(ev);\n\n if (ev.node) {\n\n // override the hover color\n this.assignActiveStyle(id);\n }\n\n // show tooltip if not in edit mode\n if (!this.isVisInEditMode() && !this.contextMenu.isShown()) {\n var populator = this.constructTooltip;\n this.tooltip.show(signature, populator);\n }\n }\n }, {\n key: 'handleVisBlurElement',\n value: function handleVisBlurElement(ev) {\n\n this.tooltip.hide();\n }\n }, {\n key: 'handleVisLoading',\n value: function handleVisLoading(_ref9) {\n var total = _ref9.total,\n iterations = _ref9.iterations;\n\n\n // we only start to show the progress bar after a while\n //~ if (params.iterations / params.total < 0.05) return;\n\n this.graphLoadingBarDomNode.style.display = 'block';\n this.graphLoadingBarDomNode.setAttribute('max', total);\n this.graphLoadingBarDomNode.setAttribute('value', iterations);\n\n //~ var text = 'Loading ' + Math.round((iterations / total) * 100) + '%';\n //~ this.graphLoadingBarDomNode.innerHTML = text;\n }\n }, {\n key: 'handleVisLoadingDone',\n value: function handleVisLoadingDone(params) {\n\n this.graphLoadingBarDomNode.style.display = 'none';\n }\n\n /**\n * Called by vis when a node is being dragged.\n * Vis passes an object containing event-related information.\n * @param {Array<Id>} nodes - Array of ids of the nodes\n * that were being dragged.\n */\n\n }, {\n key: 'handleVisDragStart',\n value: function handleVisDragStart(_ref10) {\n var nodes = _ref10.nodes;\n\n\n if (!nodes.length ||\n // we do not allow nodes to be dragged if not in editor mode\n // except cases physics is enabled\n !this.isDraggingAllowed(nodes)) {\n return;\n }\n\n this.hidePopups(0, true);\n this.assignActiveStyle(nodes);\n this.setNodesMoveable(nodes, true);\n\n if (nodes.length === 1) {\n this.draggedNode = nodes[0];\n }\n }\n\n /**\n * called from outside.\n */\n\n }, {\n key: 'destruct',\n value: function destruct() {\n\n // while the container should be destroyed and the listeners\n // garbage collected, we remove them manually just to be save\n\n _utils2.default.setDomListeners('remove', window, this.windowDomListeners);\n _utils2.default.setDomListeners('remove', this.domNode, this.widgetDomListeners);\n\n this._destructVis();\n }\n\n /**\n * Only destructs stuff related to vis.\n */\n\n }, {\n key: '_destructVis',\n value: function _destructVis() {\n\n if (!this.network) return;\n\n _utils2.default.setDomListeners('remove', this.canvas, this.canvasDomListeners);\n\n this.network.destroy();\n this.network = null;\n }\n\n /**\n * Opens the tiddler that corresponds to the given id either as\n * modal (when in fullscreen mode) or in the story river.\n */\n\n }, {\n key: 'openTiddlerWithId',\n value: function openTiddlerWithId(id) {\n var _this16 = this;\n\n var tRef = $tm.tracker.getTiddlerById(id);\n\n this.logger('debug', 'Opening tiddler', tRef, 'with id', id);\n\n if (this.enlargedMode === 'fullscreen') {\n\n var draftTRef = $tw.wiki.findDraft(tRef);\n var wasInDraftAlready = !!draftTRef;\n\n if (!wasInDraftAlready) {\n\n var type = 'tm-edit-tiddler';\n this.dispatchEvent({ type: type, tiddlerTitle: tRef });\n draftTRef = $tw.wiki.findDraft(tRef);\n }\n\n var args = { draftTRef: draftTRef, originalTRef: tRef };\n\n $tm.dialogManager.open('fullscreenTiddlerEditor', args, function (isConfirmed, outTObj) {\n\n if (isConfirmed) {\n\n var _type = 'tm-save-tiddler';\n _this16.dispatchEvent({ type: _type, tiddlerTitle: draftTRef });\n } else if (!wasInDraftAlready) {\n\n // also removes the draft from the river before deletion!\n _utils2.default.deleteTiddlers([draftTRef]);\n }\n\n // in any case, remove the original tiddler from the river\n var type = 'tm-close-tiddler';\n _this16.dispatchEvent({ type: type, tiddlerTitle: tRef });\n });\n } else {\n\n var bounds = this.domNode.getBoundingClientRect();\n\n this.dispatchEvent({\n type: 'tm-navigate',\n navigateTo: tRef,\n navigateFromTitle: this.getVariable('storyTiddler'),\n navigateFromNode: this,\n navigateFromClientRect: {\n top: bounds.top,\n left: bounds.left,\n width: bounds.width,\n right: bounds.right,\n bottom: bounds.bottom,\n height: bounds.height\n }\n });\n }\n }\n\n /**\n * The view holder is a tiddler that stores a references to the current\n * view. If the graph is not bound to a view by the user via an\n * attribute, the default view holder is used. Otherwise, a temporary\n * holder is created whose value is set to the view specified by the user.\n * This way, the graph is independent from view changes made in a\n * tiddlymap editor.\n *\n * This function will only calculate a new reference to the holder\n * on first call (that is when no view holder is registered to 'this'.\n *\n */\n\n }, {\n key: 'getViewHolderRef',\n value: function getViewHolderRef() {\n\n // the viewholder is never recalculated once it exists\n if (this.viewHolderRef) {\n return this.viewHolderRef;\n }\n\n this.logger('info', 'Retrieving or generating the view holder reference');\n\n // if given, try to retrieve the viewHolderRef by specified attribute\n var viewName = this.getAttr('view');\n var holderRef = null;\n\n if (viewName) {\n\n this.logger('log', 'User wants to bind view \"' + viewName + '\\' to graph');\n\n var viewRef = $tm.path.views + '/' + viewName;\n\n if ($tw.wiki.getTiddler(viewRef)) {\n\n // create a view holder that is exclusive for this graph\n\n holderRef = $tm.path.localHolders + '/' + _utils2.default.genUUID();\n this.logger('log', 'Created an independent temporary view holder \"' + holderRef + '\"');\n\n // we do not use setView here because it would store and reload the view unnecessarily...\n _utils2.default.setText(holderRef, viewRef);\n\n this.logger('log', 'View \"' + viewRef + '\\' inserted into independend holder');\n } else {\n this.logger('log', 'View \"' + viewName + '\" does not exist');\n }\n }\n\n if (!holderRef) {\n this.logger('log', 'Using default (global) view holder');\n holderRef = $tm.ref.defaultViewHolder;\n }\n\n return holderRef;\n }\n\n /**\n * This function will switch the current view reference of the\n * view holder.\n *\n * NOTE:\n * The changes will be picked up in the next refresh cycle.\n * This function will never update the view object currently\n * held by this widget (this.view)! This would create a race\n * condition where the view has changed, but the graph data hasn't\n * and maybe a stabilization event fires in this moment. At this point\n * it would work with graph data that doesn't relate to the view\n * and do bad things, trust me, big time bad things.\n *\n * @param {ViewAbstraction|string} view – A reference to the view.\n * @param {string} [viewHolderRef] – A reference to the view holder.\n */\n\n }, {\n key: 'setView',\n value: function setView(view, viewHolderRef) {\n\n if (!_ViewAbstraction2.default.exists(view)) {\n\n return;\n }\n\n view = new _ViewAbstraction2.default(view);\n\n var viewLabel = view.getLabel();\n viewHolderRef = viewHolderRef || this.viewHolderRef;\n this.logger('info', 'Inserting view \"' + viewLabel + '\" into holder \"' + viewHolderRef + '\"');\n $tw.wiki.addTiddler(new $tw.Tiddler({\n title: viewHolderRef,\n text: viewLabel\n }));\n\n // we don't wait til next render-cycle (which would leave tiddlymap in\n // a rather undefined state) but update immediately.\n this.update({\n changedTiddlers: _defineProperty({}, viewHolderRef, true)\n });\n }\n\n /**\n * This function will return a view abstraction that is based on the\n * view specified in the view holder of this graph.\n *\n * @param {boolean} noCache - Retrieve the view reference again\n * from the holder and recreate the view abstraction object.\n * @return {ViewAbstraction} the view\n */\n\n }, {\n key: 'getView',\n value: function getView(noCache) {\n\n if (!noCache && this.view) {\n return this.view;\n }\n\n var viewHolderRef = this.getViewHolderRef();\n\n // transform into view object\n var ref = _utils2.default.getText(viewHolderRef);\n\n this.logger('debug', 'Retrieved view from holder');\n\n var view = void 0;\n\n if (_ViewAbstraction2.default.exists(ref)) {\n\n view = new _ViewAbstraction2.default(ref);\n } else {\n\n this.logger('debug', 'Warning: View \"' + ref + '\" doesn\\'t exist. Default is used instead.');\n view = new _ViewAbstraction2.default('Default');\n }\n\n return view;\n }\n }, {\n key: 'reloadBackgroundImage',\n value: function reloadBackgroundImage(msg) {\n var _this17 = this;\n\n this.backgroundImage = null;\n\n var bgFieldValue = this.view.getConfig('background_image');\n var imgTObj = _utils2.default.getTiddler(bgFieldValue);\n if (!imgTObj && !bgFieldValue) return;\n\n var img = new Image();\n var ajaxCallback = function ajaxCallback(b64) {\n img.src = b64;\n };\n img.onload = function () {\n // only now set the backgroundImage to the img object!\n _this17.backgroundImage = img;\n _this17.repaintGraph();\n };\n\n if (imgTObj) {\n // try loading from tiddler\n var urlField = imgTObj.fields['_canonical_uri'];\n if (urlField) {\n // try loading by uri field\n _utils2.default.getImgFromWeb(urlField, ajaxCallback);\n } else if (imgTObj.fields.text) {\n // try loading from base64\n img.src = $tw.utils.makeDataUri(imgTObj.fields.text, imgTObj.fields.type);\n }\n } else if (bgFieldValue) {\n // try loading directly from reference\n _utils2.default.getImgFromWeb(bgFieldValue, ajaxCallback);\n }\n }\n\n /**\n * The graph of this widget is only repainted if the following counts:\n *\n * The network object exists (prerequisit).\n *\n * 1. We are not in fullscreen at all\n * 2. This particular graph instance is currently running fullscreen.\n */\n\n }, {\n key: 'repaintGraph',\n value: function repaintGraph() {\n\n var isInFS = $tw.utils.hasClass(this.document.body, 'tmap-has-fullscreen-widget');\n if (this.network && (!isInFS || isInFS && this.enlargedMode)) {\n\n this.logger('info', 'Repainting the whole graph');\n\n this.network.redraw();\n this.fitGraph(0, 1000);\n }\n }\n\n /**\n * If a button is enabled it means it is displayed on the graph canvas.\n *\n * @param {string} name - The name of the button to enabled. Has to\n * correspond with the css button name.\n * @param {boolean} enable - True if the button should be visible,\n * false otherwise.\n */\n\n }, {\n key: 'setGraphButtonEnabled',\n value: function setGraphButtonEnabled(name, enable) {\n\n var className = 'vis-button tmap-' + name;\n var b = _utils2.default.getFirstElementByClassName(className, this.domNode);\n $tw.utils.toggleClass(b, 'tmap-button-enabled', enable);\n }\n\n /**\n * Allow the given nodes to be moveable.\n *\n * @param {Array<number>} nodeIds - The ids of the nodes for which\n * we allow or disallow the movement.\n * @param {boolean} isMoveable - True, if the nodes are allowed to\n * move or be moved.\n */\n\n }, {\n key: 'setNodesMoveable',\n value: function setNodesMoveable(nodeIds, isMoveable) {\n\n if (!nodeIds || !nodeIds.length || this.view.isEnabled('physics_mode')) {\n // = no ids passed or in floating mode\n return;\n }\n\n var updates = [];\n var isFixed = !isMoveable;\n for (var i = nodeIds.length; i--;) {\n\n updates.push({\n id: nodeIds[i],\n fixed: { x: isFixed, y: isFixed }\n });\n }\n\n this.graphData.nodes.update(updates);\n\n if (isFixed) {\n\n this.logger('debug', 'Fixing', updates.length, 'nodes');\n\n // if we fix nodes in static mode then we also store the positions\n this.view.saveNodePositions(this.network.getPositions());\n // prevent zoom\n this.isPreventZoomOnNextUpdate = true;\n }\n }\n\n /**\n * This function will create the dom elements for all tiddlymap-vis\n * buttons and register the event listeners.\n *\n * @param {Object<string, function>} buttonEvents - The label of the\n * button that is used as css class and the click handler.\n */\n\n }, {\n key: 'addGraphButtons',\n value: function addGraphButtons(buttonEvents) {\n\n var parent = _utils2.default.getFirstElementByClassName('vis-navigation', this.domNode);\n\n for (var name in buttonEvents) {\n var div = this.document.createElement('div');\n div.className = 'vis-button tmap-' + name;\n\n div.addEventListener('click', buttonEvents[name].bind(this), false);\n parent.appendChild(div);\n\n this.setGraphButtonEnabled(name, true);\n }\n }\n }]);\n\n return MapWidget;\n}(_widget.widget);\n\n/*** Exports *******************************************************/\n\nexports.tmap = MapWidget;\nexports.tiddlymap = MapWidget;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/widget/MapWidget.js.map\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/felixhayashi/tiddlymap/license": {
"title": "$:/plugins/felixhayashi/tiddlymap/license",
"subtitle": "License",
"caption": "License",
"text": "\\rules except wikilink\n\n!! TiddlyMap\n\nCopyright (c) 2014, Felix Küppers\nAll rights reserved.\n\nTiddlyMap is licensed under the [[BSD 2-Clause License|http://opensource.org/licenses/BSD-2-Clause]]. For the exact license terms, please visit [[https://github.com/felixhayashi/TW5-TiddlyMap/blob/master/LICENSE]]. \n\n!! TiddlyWiki\n\nCreated by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright © Jeremy Ruston 2004-2007 Copyright © UnaMesa Association 2007-2014\n\nPublished under the following [licenses](https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses):\n\n# BSD 3-clause \"New\" or \"Revised\" License (including any right to adopt any future version of a license if permitted)\n# Creative Commons Attribution 3.0 (including any right to adopt any future version of a license if permitted)\n\n!! Vis.js\n\nCopyright (c) 2014 [Almende B.V.](https://github.com/almende/vis)\n\nPublished under the following licenses:\n\n# Apache License Version 2.0, January 2004 http://www.apache.org/licenses/\n# MIT License (MIT)\n"
},
"$:/plugins/felixhayashi/tiddlymap/readme": {
"title": "$:/plugins/felixhayashi/tiddlymap/readme",
"text": "* Please refer to the project-readme hosted at [[https://github.com/felixhayashi/TW5-TiddlyMap]].\n* A demo with several examples and explanations can be found at [[http://tiddlymap.org]]."
},
"$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tmap:unknown": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tmap:unknown",
"description": "Automatically assigned to an edge that does not have a type assigned",
"style": "{\"color\":\"gray\"}",
"show-label": "false"
},
"$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-body:link": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-body:link",
"description": "A link that is contained in the tiddler's body pointing to another resource.",
"style": "{\"color\":\"orange\", \"dashes\":true}",
"label": "links to",
"text": ""
},
"$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-list:list": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-list:list",
"description": "Contained in a list of this tiddler",
"style": "{ \"color\": \"red\", \"dashes\":true}",
"label": "listed in",
"text": ""
},
"$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-list:tags": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-list:tags",
"description": "A tag that refers to a tiddler of the same name.",
"style": "{ \"color\": \"darkslategray\", \"dashes\":true}",
"label": "tagged with"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/default": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/default",
"caption": "Overview",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-plain\">\n Please visit the [[online docs|http://tiddlymap.org/Documentation]]\n for more information about the available global options.\n</div>\n<table class=\"tmap-key-value-table\">\n <tr>\n <th align=\"left\">Plugin version</th>\n <td><<pluginVersion>></td>\n </tr>\n<!--\n <tr>\n <th align=\"left\">Datastructure version</th>\n <td><<dataStructureVersion>></td>\n </tr>\n-->\n <tr>\n <th align=\"left\">Nodes in system</th>\n <td><<numberOfNodes>></td>\n </tr>\n <tr>\n <th align=\"left\">Edges in system</th>\n <td><<numberOfEdges>></td>\n </tr>\n</table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/editor": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/editor",
"caption": "Editor",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Neighbour­hood menu\"\n field:\"config.sys.editorMenuBar.showNeighScopeButton\"\n descr:\"Show or hide the neighbourhood menu button.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Screen­shot menu\"\n field:\"config.sys.editorMenuBar.showScreenshotButton\"\n descr:\"Show or hide the screenshot menu button.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Raster­ menu\"\n field:\"config.sys.editorMenuBar.showRasterMenuButton\"\n descr:\"Show or hide the raster menu button.\">>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/fields": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/fields",
"caption": "Field settings",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"Node-icon field\"\n field:\"config.sys.field.nodeIcon\" \n descr:\"Local image used as node image in the graphs.\">>\n <<tmap-row type:\"input-text\"\n title:\"Node-label field\"\n field:\"config.sys.field.nodeLabel\" \n descr:\"Alternative node label to use instead of the title.\">>\n <<tmap-row type:\"input-text\"\n title:\"Node-info field\"\n field:\"config.sys.field.nodeInfo\" \n descr:\"Field used as tooltip when hovering over a node in a graph.\"\n note:\"It is prohibited to use the text field here.\">>\n</table> \n\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/interaction": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/interaction",
"caption": "Interaction & behaviour",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"Default startup view\"\n field=\"config.sys.defaultView\"\n nochoice=\"Last view used at startup\"\n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"The view to display at startup\" />\n <<tmap-row type:\"input-checkbox\"\n title:\"Show popups\"\n field:\"config.sys.popups.enabled\"\n descr:\"Set this to true if you want to see automatic\n popups in the map.\">>\n <$list filter=\"[config.sys.popups.enabled[true]]\">\n <<tmap-row type:\"input-text\"\n title:\"Popup delay\"\n field:\"config.sys.popups.delay\"\n descr:\"The time in miliseconds that needs to pass after\n a tooltip is triggered.\">>\n <<tmap-row type:\"input-text\"\n title:\"Popup width\"\n field:\"config.sys.popups.width\"\n descr:\"The default max-width of the popup.\"\n note:\"Make sure you added the desired unit (e.g. `px`).\n Requires a wiki refresh.\">>\n <<tmap-row type:\"input-text\"\n title:\"Popup height\"\n field:\"config.sys.popups.height\"\n descr:\"The default max-height of the popup.\"\n note:\"Make sure you added desired the unit (e.g. `px`).\n Requires a wiki refresh.\">>\n </$list>\n <<tmap-row type:\"input-checkbox\"\n title:\"Allow single click mode\"\n field:\"config.sys.singleClickMode\"\n descr:\"A single click on a node is sufficient to open the\n corresponding tiddler.\"\n note:\"Drag and drop will still work and does not cause a\n tiddler to be opened. Single click is never active in\n the map editor.\">>\n <<tmap-row type:\"input-select\"\n title:\"Edge click behaviour\"\n field:\"config.sys.edgeClickBehaviour\"\n selectFilter:\"[[nothing|Nothing]]\n [[manager|Open edge-type manager]]\"\n descr:\"What should happen when you click on an edge?\">>\n <<tmap-row type:\"input-select\" title:\"Raster size\" field:\"config.sys.raster\"\n selectFilter:\"[[|disabled]] [[5|5px]] [[10|10px]] [[15|15px]] [[20|20px]] [[30|30px]] [[40|40px]]\"\n descr:\"Snap nodes to an invisible raster of the given size after drag'n'drop.\"\n note:\"Only works when the view is not in floating mode\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Apply node-filter to neighbours\"\n field:\"config.sys.nodeFilterNeighbours\"\n descr:\"If checked, neighbours displayed in the map will be filtered\n by the view's node-filter. Otherwise the node-filter will only be used\n to filter the original set of nodes in the map\">>\n</table>\n\n!! Suppressed dialogs\n\n<div class=\"tmap-flash-message tmap-plain\">\n Dialogs that you decided to suppress in the past are listed here.\n Remove the checkmark to enable dialogs again.\n</div>\n\n<table class=\"tmap-config-table\">\n <$list\n filter=\"[<output>fields[]prefix[config.sys.suppressedDialogs]]\"\n emptyMessage=\"–\">\n <$set name=\"dialogName\" value=<<tmap basename \".\">>>\n <$macrocall $name=\"tmap-row\"\n type=\"input-checkbox\"\n title=\"Suppress '$(dialogName)$' dialog\"\n field=<<currentTiddler>> />\n </$set>\n <br />\n </$list>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/liveTab": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/liveTab",
"caption": "Live tab",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Live tab\"\n field:\"liveTab\" \n descr:\"Show or hide the live tab in the sidebar.\">>\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"Fallback view\"\n field=\"config.sys.liveTab.fallbackView\" \n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"The view to display in the sidebar's live tab in\n case the current tiddler did not specify a view\n to open.\" />\n</table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig",
"subtitle": "{{$:/core/images/options-button}} Global configuration of TiddlyMap",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n\n<$macrocall $name=\"tabs\"\n default=<<concat \"$(template)$/default\">>\n tabsList=\"[all[shadows]prefix<template>] -[<template>]\"\n/>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/verbosity": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/verbosity",
"caption": "Verbosity",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-plain\">\n Here you can restrict the system's talkativeness.\n</div>\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Debug output\"\n field:\"config.sys.debug\" \n descr:\"Set this to true if you want debug information to be\n displayed in the browser console.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show notifications\"\n field:\"config.sys.notifications\" \n descr:\"Set this to true if you want to receive fade-out\n notifications for important events.\">>\n</table> "
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis",
"classes": "tmap-remove-top-space",
"caption": "Graph",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n The global vis configurations will affect all views and their\n elements (nodes and edges) unless they are overridden on a lower\n level. All options below are documented at\n [[vis.js.org|http://visjs.org/docs/network]].\n</div>\n<div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on\n the graph. Other options are visible, yet, inactive.\n</div>\n<$tmap-config\n mode=\"manage-config\"\n inherited=\"vis-inherited\"\n extension=\"config.vis\" />"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView/default": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView/default",
"caption": "Overview",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n All configurations __only__ affect this view.\n</div>\n\n<table class=\"tmap-key-value-table\">\n <tr>\n <th align=\"left\">Created on</th>\n <td><<createdOn>></td>\n </tr>\n <tr>\n <th align=\"left\">Nodes contained in graph</th>\n <td><<numberOfNodes>></td>\n </tr>\n <tr>\n <th align=\"left\">Edges contained in graph</th>\n <td><<numberOfEdges>></td>\n </tr>\n</table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView/editFilters": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView/editFilters",
"caption": "Edit filters",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n Completely new to filters? Please read\n [[Introduction to filter notation|http://tiddlywiki.com/#Introduction%20to%20filter%20notation]]\n first.\n</div>\n\n<fieldset>\n <legend>Filters <sup>[1]</sup></legend>\n <table class=\"tmap-config-table tmap-large-input\">\n <<tmap-row type:\"input-textarea\"\n title:\"Node filter\"\n field:\"filter.prettyNodeFltr\"\n descr:\"In the map, only those tiddlers that match this filter\n are shown. Drafts and system tiddlers are automatically\n excluded.\">>\n <<tmap-row type:\"input-textarea\"\n title:\"Edge-type filter\"\n field:\"filter.prettyEdgeFltr\" \n descr:\"Only edges with a type that matches the filter are shown.\">>\n </table> \n</fieldset>\n\n---\n\n<sup>[1]</sup> In the editors above, a new line is equivalent to a space symbol.<br />\n<sup>[2]</sup> It is suggested to read\n[[Node and edge-type filters|http://tiddlymap.org#Node%20and%20edge-type%20filters]]\nand [[Edge-type namespaces|http://tiddlymap.org#Node%20and%20edge-type%20filters]]\nbefore using Tiddlymap's filter editor."
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView/layout": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView/layout",
"caption": "Layout",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Floating nodes\"\n field:\"config.physics_mode\" \n descr:\"Set this to true if you want your nodes to freely\n swirl around.\">>\n <<tmap-row type:\"input-text\"\n title:\"Background image\"\n field:\"config.background_image\" \n descr:\"The title of an image tiddler to be used as background\n in the view.\"\n note:\"You can also use an image url directly, however, the\n image needs be stored under the same domain as your wiki.\n Otherwise, it won't be displayed!\">>\n</table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView/namespace": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView/namespace",
"caption": "Namespace",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table tmap-small-input\">\n <<tmap-row type:\"input-text\"\n title:\"Edge-type namespace\"\n field:\"config.edge_type_namespace\" \n descr:\"A namespace (like `foaf` in `foaf:knows`) that will be\n automatically added to all edge types you create in\n this view. The namespace is only added if the types\n do not exist yet and do not have a namespace assigned yet.\n Namespaces are always hidden in the graph.\"\n note:\"Most likely, you don't want the edges created with this\n namespace to leak into other views, moreover, you don't\n want edges that do not possess the namespace ever to be\n shown here. In this case, use a private marker (`_`)\n in front of your namespace, e.g. `_mynamespace` and use\n an appropriate edge type filter, i.e. `+[prefix[_mynamespace]]`\n For further information see:\n \n * [[Edge-type namespaces|http://tiddlymap.org/#Edge-type%20namespaces]]\n * [[Private edge types|http://tiddlymap.org/#Private%20edge%20types]]\n \">>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView",
"subtitle": "{{$:/core/images/options-button}} View configuration -- <<view>>",
"text": "\\rules except wikilink\n\n\\define privateEdgeTypes() [[private edge-types|http://tiddlymap.org/#Private%20edge%20types]]\n\n<$macrocall $name=\"tabs\"\n default=<<concat \"$(template)$/default\">>\n tabsList=\"[all[shadows]prefix<template>] -[<template>]\"\n/>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView/vis": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView/vis",
"caption": "Graph",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n The local vis configurations will affect all\n elements (nodes and edges) of this view, unless they are\n overridden on a lower level. All options below are documented at\n [[vis.js.org|http://visjs.org/docs/network]].\n</div>\n<div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on the\n graph. Other options are visible, yet, inactive.\n</div>\n<$tmap-config\n mode=\"manage-config\"\n inherited=\"vis-inherited\"\n extension=\"config.vis\" />"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/getEdgeType": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/getEdgeType",
"subtitle": "{{$:/plugins/felixhayashi/tiddlymap/icon}} Edge type specification",
"text": "\\rules except wikilink\n\\rules except underscore\n\n\\define filter() $(allEdgeTypes)$ +[search:title[$(term)$]]\n\n\\define badge(color, label, tooltip)\n<span style=\"background: $color$\" title=\"$tooltip$\">$label$</span>\n\\end\n\n\\define badges()\n<$tiddler tiddler={{!!text}}>\n<$set name=\"id\" value=<<tmap \"getETyId\" \"$(view)$\">>>\n<$set name=\"isVisible\" value=<<tmap \"isETyVisible\" \"$(view)$\">>>\n<div class=\"tmap-badges\">\n <span\n style=\"background: darkslategray\"\n title=\"Your input translates into this id.\">\n <<id>>\n </span>\n <$list filter=\"[<isVisible>regexp[true]]\">\n <<badge \"green\" \"visible\" \"Matches your view's filter\">>\n </$list>\n <$list filter=\"[<isVisible>regexp[false]]\">\n <<badge \"red\" \"not visible\" \"Doesn't match your view's filter\">>\n </$list>\n <$list filter=\"[<id>!regexp[^tmap:unknown$]]\" variable=\"item\">\n <$list filter=\"[<id>regexp[^_]]\">\n <<badge \"purple\" \"private\" \"Not shown in other views per default\">>\n </$list>\n <$list filter=\"[<id>regexp[.+:.+]]\">\n <<badge \"orange\" \"namespace\" \"This type is prefixed with a proper namespace\">>\n </$list>\n </$list>\n</div>\n</$set>\n</$set>\n</$tiddler>\n\\end\n\n\\define search()\n<p>\n You are about to connect \"<$text text=\"$(fromLabel)$\" />\"\n with \"<$text text=\"$(toLabel)$\" />\". Please specify a type.\n</p>\n<table id=\"tmap-search-table\">\n <tr>\n <td><b>Type:</b></td>\n <td>\n <$edit-text\n focus=\"true\"\n field=\"text\"\n type=\"text\"\n tag=\"input\"\n default=\"\"\n class=\"tmap-trigger-field\n tmap-triggers-ok-button-on-enter\n tmap-triggers-cancel-button-on-esc\" />\n <<badges>>\n </td>\n </tr>\n <tr>\n <td></td>\n <td>\n <$set name=\"term\" value={{!!text}}>\n <$set name=\"allEdgeTypes\" value=<<tmap \"option\" \"selector.allEdgeTypesById\">>>\n <ul class=\"tmap-small-list\">\n <$list filter=<<filter>>>\n <li>\n <$button class=\"tc-btn-invisible tmap-link\">\n <$view field=\"title\" />\n <$action-setfield $tiddler=<<output>> text={{!!title}} />\n </$button>\n </li>\n </$list>\n </ul>\n </$set>\n </$set>\n </td>\n </tr>\n</table>\n\\end\n\n<$list filter=\"[<temp>!has[more]]\" variable=\"item\"><<search>></$list>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/addNodeToMap": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/addNodeToMap",
"subtitle": "{{$:/core/images/tag-button}} Add node",
"classes": "tmap-modal-add-node",
"text": "\\rules except wikilink\n\n\\define backButtonText() back to list\n\\define outputAndTemplate() [[$(output)$]] [[$(template)$]]\n\n\\define editor()\n <$button class=\"tmap-go-back tc-btn-invisible\">\n {{$:/core/images/chevron-left}} <<backButtonText>>\n <$action-deletefield $tiddler=<<temp>> more template />\n <$action-sendmessage\n $message=\"tmap:tm-clear-tiddler\"\n keep=\"draft.title\"\n title=<<output>> />\n </$button>\n\n <$list filter=\"[<output>get[draft.title]is[tiddler]]\">\n <div class=\"tmap-flash-message tmap-warning\">\n Tiddler already exists! Use another title or click\n \"<<backButtonText>>\" to cancel your edit.\n </div>\n </$list>\n\n <div class=\"tmap-modal-editor\">\n <table class=\"tmap-config-table\">\n <tr class=\"tmap-template-select\">\n <td>Template</td>\n <td>\n <$select\n tiddler=<<temp>>\n field=\"template\">\n <option value=\"\"></option>\n <$list filter=<<tmap \"option\" \"selector.allPotentialNodes\">>>\n <option><$view field=\"title\" /></option>\n </$list>\n </$select>\n <$button>Load\n <$action-sendmessage\n $message=\"tmap:tm-clear-tiddler\"\n keep=\"draft.title\"\n title=<<output>> />\n <$list filter=\"[<temp>get[template]]\" variable=\"template\">\n <$action-sendmessage\n $message=\"tmap:tm-merge-tiddlers\"\n tiddlers=<<outputAndTemplate>>\n output=<<output>> />\n <$action-deletefield $tiddler=<<output>> tmap.id tmap.edges />\n </$list>\n </$button>\n </td>\n <td>Press the \"load\" button to activate the template.</td>\n </tr>\n </table>\n <$importvariables filter=\"[all[tiddlers+shadows]prefix[$:/core/macros/]]\">\n <$set name=\"currentTiddler\" value=<<output>>>\n <$transclude tiddler=\"$:/core/ui/EditTemplate\" mode=\"block\" />\n </$set>\n </$importvariables>\n </div>\n\\end\n\n\\define search()\n<p>Add an existing tiddler to the map or create a new one.</p>\n<table id=\"tmap-search-table\">\n <tr>\n <td><b>Title:</b></td>\n <td>\n <$edit-text\n tiddler=<<output>>\n field=\"draft.title\"\n focus=\"true\"\n type=\"text\"\n tag=\"input\"\n default=\"\"\n class=\"tmap-trigger-field\n tmap-triggers-ok-button-on-enter\n tmap-triggers-cancel-button-on-esc\" />\n <$list filter=\"[<output>get[draft.title]!is[tiddler]]\">\n <$button\n tooltip=\"The tiddler does not exist yet and you may edit it\n before it is added to the map\">\n {{$:/core/images/edit-button}}\n <$action-setfield $tiddler=<<temp>> more=\"true\" />\n </$button> <sup>[1]</sup>\n </$list>\n </td>\n </tr>\n <tr>\n <td></td>\n <td>\n <$set name=\"term\" value={{!!draft.title}}>\n <ul class=\"tmap-small-list\">\n <$list filter=\"[search:title<term>!is[system]!has[draft.of]]\">\n <li>\n <$button class=\"tc-btn-invisible tmap-link\">\n <$view field=\"title\" />\n <$action-setfield $tiddler=<<output>> draft.title={{!!title}} />\n </$button>\n </li>\n </$list>\n </ul>\n </$set>\n </td>\n </tr>\n</table>\n\n<$list filter=\"[<output>get[draft.title]!is[tiddler]]\">\n<hr />\n<sup>[1]</sup>\n<small>\n The tiddler does not exist yet and you may edit it\n before it is added to the map\n</small>\n</$list>\n\\end\n\n<$list filter=\"[<temp>!has[more]]\" variable=\"item\"><<search>></$list>\n<$list filter=\"[<temp>has[more]]\" variable=\"item\"><<editor>></$list>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/cannotDeleteViewDialog": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/cannotDeleteViewDialog",
"subtitle": "{{$:/core/images/locked-padlock}} You cannot delete this view!",
"buttons": "ok",
"text": "\\rules except wikilink\n\nIt is not possible to delete the current view as ''<<count>>'' tiddlers\nare referencing it. To delete the view you must first remove the tiddlymap\nwidgets in the tiddlers listed below or change their view attributes.\n\n''References''\n\n<ul>\n<$list filter=<<refFilter>> variable=\"item\">\n <li><$link><<item>></$link></li>\n</$list>\n</ul>\n\nAfter the references are removed, you may delete the view.\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/getConfirmation": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/getConfirmation",
"subtitle": "{{$:/core/images/import-button}} You must confirm in order to proceed!",
"text": "\\rules except wikilink\n\n<<message>>\n\n''Are you really sure you want to do this?''"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/createView": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/createView",
"subtitle": "{{$:/core/images/new-button}} Creating a new view",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"View name\"\n field:\"name\"\n focus:\"true\"\n class:\"tmap-trigger-field\n tmap-triggers-ok-button-on-enter\n tmap-triggers-cancel-button-on-esc\"\n descr:\"The name for the new view. If no name is entered,\n the program will invent one for you.\"\n note:\"You cannot override an existing view. In this case,\n you need to delete the old view first! You must no use\n slashes (`/`) in the name.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Clone view\"\n field:\"clone\"\n descr:\"Use the view that is currently displayed in the\n editor as blueprint. The view will be an __exact__\n clone of the current one, only with a different\n name.\">>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/deleteNodeDialog": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/deleteNodeDialog",
"subtitle": "{{$:/core/images/delete-button}} You are about to delete <<count>> nodes",
"text": "\\rules except wikilink\n\n''Please choose an option or abort:''\n\n<$radio tiddler=<<output>> field=\"delete-from\" value=\"system\">\n Delete nodes from system <sup>[1]</sup>\n</$radio><br />\n<$radio tiddler=<<output>> field=\"delete-from\" value=\"filter\">\n Delete nodes from graph's filter <sup>[2]</sup>\n</$radio>\n\nThe following nodes will be deleted:\n\n<ul>\n<$list filter=<<tiddlers>>>\n <li><$view tiddler={{!!title}} field=\"title\" /></li>\n</$list>\n</ul>\n\n---\n\n<sup>[1]</sup>\n<small>This will delete all nodes, their corresponding tiddlers and all connected edges.</small><br/>\n<sup>[2]</sup>\n<small>''Important:'' Removing a node from the graph's filter only works, if the node has been added in the map editor per double click or via \"Add Node\". If the node hasn't been added as mentioned above, you need to change the underlying tiddler in a way that it doesn't match your filter anymore, if you don't want it to be displayed in the graph.</small>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/dublicateIdInfo": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/dublicateIdInfo",
"subtitle": "{{$:/core/images/info-button}} Dublicate id detected",
"buttons": "ok_suppress",
"text": "\\rules except wikilink\n\nTiddlyMap requires the value of the id field (\"tmap.id\") to be\nunique in order to correctly identify nodes and tiddlers.\n\nThe id of the \"<<param.changedTiddler>>\" already exists for these tiddlers:\n\n<ul>\n<$list filter=<<param.filter>> variable=\"item\">\n <li><$link><<item>></$link></li>\n</$list>\n</ul>\n\nTherefore TiddlyMap\n\n* assigned a new id to tiddler \"<<param.changedTiddler>>\"\n* removed all edges from \"<<param.changedTiddler>>\"\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/edgeNotVisible": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/edgeNotVisible",
"subtitle": "{{$:/core/images/info-button}} Edge will not be visible in view \"<<view>>\"",
"buttons": "ok_suppress",
"text": "\\rules except wikilink\n\nYou just created an edge of type\n<code><$text text=<<type>> /></code> that will not be\nvisible in this view because it doesn't match your\nedge-type filter settings.\n\nThe current edge-type filter of view \"<<view>>\" looks like this:\n\n<pre><code><$text text=<<eTyFilter>> /></code></pre>\n\nTo have the newly added type displayed in your view, adjust your\nedge-type filter accordingly. \n\nSome suggestions:\n\n<ul>\n <li>\n Explicitly add the type to the filter:\n <code><$text text=\"[[\" /><$text text=<<type>> /><$text text=\"]]\" /></code>\n </li>\n <li>\n <$set\n filter=\"[<type>regexp[:]splitbefore[:]]\"\n name=\"prefix\"\n emptyValue=<<tmap halfOfString \"$(type)$\">>>\n Add a filter rule (e.g. a prefix filter) that will match\n your type: <code>[prefix[<<prefix>>]]</code>\n </$set>\n </li>\n <li>Make your current view-filter less restrictive.</li>\n</ul>\n\nFor further information, please see:\n[[Node and edge-type filters|http://tiddlymap.org#Node%20and%20edge-type%20filters]]."
},
"$:/plugins/felixhayashi/tiddlymap/dialog/editNode/default": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/editNode/default",
"caption": "Global node style",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n A node's ''global configuration''\n (also referred to as //global individual config//) defines its\n individual appearance and behaviour in all views.\n</div>\n<<maybeShowTidColorWarning>>\n \n<$macrocall $name=\"sharedSettings\"\n twIconField=<<tidIconField>>\n faIconField=\"global.tmap.fa-icon\"\n labelField=<<tidLabelField>> />\n\n<$macrocall $name=\"visConfiguration\"\n mode=\"manage-node-types\"\n extensionField=\"global.tmap.style\"\n styleName=\"node's global style\"\n inheritedList=\"[[inherited-global-default-style]]\n [[inherited-local-default-style]]\n [[inherited-group-styles]]\" />"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/editNode/local": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/editNode/local",
"caption": "Local node style",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n \n<div class=\"tmap-flash-message tmap-info\">\n The ''local node configuration'' \n (also referred to as //view-specific node configuration//)\n overrides the //global individual configuration// and only affects\n the node's appearance and behaviour in the current view.\n</div>\n<<maybeShowTidColorWarning>>\n\n<fieldset>\n <legend>Behaviour</legend>\n <table class=\"tmap-config-table\">\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"Open view\"\n field=\"local.open-view\"\n nochoice=\"Disabled\"\n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"Clicking on this node will open the specified\n view instead of the tiddler represented by this node.\" />\n </table>\n</fieldset>\n\n<$macrocall $name=\"sharedSettings\"\n twIconField=\"local.tw-icon\"\n faIconField=\"local.fa-icon\"\n labelField=\"local.label\" />\n \n<$macrocall $name=\"visConfiguration\"\n mode=\"manage-node-types\"\n extensionField=\"local-node-style\"\n styleName=\"node's local style\"\n inheritedList=\"[[inherited-global-default-style]]\n [[inherited-local-default-style]]\n [[inherited-group-styles]]\n [[global.tmap.style]]\" />"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/editNode": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/editNode",
"subtitle": "{{$:/core/images/edit-button}} Editing style of node \"<<tiddler>>\"",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n\n\\define maybeShowTidColorWarning()\n <$list filter=\"[<tidColor>regexp[.+]]\">\n <div class=\"tmap-flash-message tmap-warning\">\n You have set the tiddler's color\n field to \"<<tidColor>>\". This value will be completely ignored\n when you change node's color properties in the vis editor below.\n </div>\n </$list>\n\\end\n\n\\define iconSettings(twIconField, faIconField)\n <fieldset>\n <legend>Icon Settings</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"TW-icon\"\n field:\"$twIconField$\"\n descr:\"A tiddlywiki image reference.\n For example '$:/core/icon' for Movotun Jack.\">>\n <<tmap-row type:\"input-text\"\n title:\"FA-icon\"\n field:\"$faIconField$\"\n descr:\"A Font Awesome icon code.\n For example 'f206' for the bicycle symbol.\">>\n </table>\n </fieldset>\n\\end\n\n\\define sharedSettings(twIconField, faIconField, labelField)\n <fieldset>\n <legend>General Settings</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"Label\"\n field:\"$labelField$\"\n descr:\"Use this value as node label.\">>\n </table>\n </fieldset>\n <!-- display icon fieldset -->\n <<iconSettings \"$twIconField$\" \"$faIconField$\">> \n\\end\n\n<$macrocall\n $name=\"tabs\"\n default=<<concat \"$(template)$/default\">>\n tabsList=\"[all[shadows]prefix<template>] -[<template>]\"\n/>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/draft": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/draft",
"caption": "Draft",
"text": "\\rules except wikilink\n\n<div class=\"tmap-modal-editor\">\n <$importvariables filter=\"[all[tiddlers+shadows]prefix[$:/core/macros/]]\">\n <$set name=\"currentTiddler\" value=<<draftTRef>> >\n <$transclude tiddler=\"$:/core/ui/EditTemplate\" field=\"text\" mode=\"block\" />\n </$set>\n </$importvariables>\n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/original": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/original",
"caption": "Current Version",
"text": "\\rules except wikilink\n\n<div class=\"tmap-modal-editor\">\n <$importvariables filter=\"[all[tiddlers+shadows]prefix[$:/core/macros/]]\">\n <$set name=\"currentTiddler\" value=<<originalTRef>> >\n <$transclude tiddler=\"$:/core/ui/ViewTemplate\" field=\"text\" mode=\"block\" />\n </$set>\n </$importvariables>\n</div>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor",
"subtitle": "{{$:/core/images/edit-button}} <<originalTRef>>",
"classes": "tmap-modal-fullscreen-editor tmap-remove-top-space",
"text": "\\rules except wikilink\n\n\\define defaultTab() $:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/original\n\n<$macrocall $name=\"tabs\"\n default=<<defaultTab>>\n tabsList=\"[all[shadows]prefix[$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/]]\" />"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/fieldChanged": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/fieldChanged",
"subtitle": "{{$:/core/images/info-button}} The field \"<<name>>\" changed",
"text": "\\rules except wikilink\n\nYou changed the field \"<<name>>\" from \"<<oldValue>>\" to \"<<newValue>>\".\n\nIt is recommended to let TiddlyMap copy all values from the former field \"<<oldValue>>\" to the new field \"<<newValue>>\" so the data stored in \"<<oldValue>>\" is not lost. This operation has to be done now or never.\n\nDo you want to move each tiddler's existing \"<<oldValue>>\" value to \"<<newValue>>\"? Please note that any value currently stored in \"<<newValue>>\" would consequently be overridden and the old field \"<<oldValue>>\" would be eventually removed!"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenNotSupported": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenNotSupported",
"subtitle": "{{$:/core/images/info-button}} Your machine does not support fullscreen",
"buttons": "ok_suppress",
"text": "\\rules except wikilink\n\nPlease have a look [[here|http://caniuse.com/#feat=fullscreen]] to see a list of supported devices/browsers.\n\nSorry for this :("
},
"$:/plugins/felixhayashi/tiddlymap/dialog/renameView": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/renameView",
"subtitle": "{{$:/core/images/tag-button}} Please specify a view name",
"text": "\\rules except wikilink\n\n''Name:''\n<$edit-text focus=\"true\" tiddler=<<output>> field=\"text\" type=\"text\" tag=\"input\" default=\"\"\n class=\"tmap-trigger-field tmap-triggers-ok-button-on-enter\" />\n\nNote that ''<<count>>'' tiddlers are referencing this view.\n\n<$reveal type=\"nomatch\" text=\"0\" default=<<count>>>\n\nRenaming the view will cause the reference to be invalid.\nIt is recommended to first remove the tiddlymap widgets in\nthe tiddlers listed below or change their view attributes\naccordingly.\n\n''References''\n\n<ul>\n<$list filter=<<refFilter>> variable=\"item\">\n <li><$text text=<<item>> /></li>\n</$list>\n</ul>\n\n</$reveal>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/saveCanvas": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/saveCanvas",
"subtitle": "{{$:/core/images/options-button}} Save a snapshot image of view \"<<view>>\"",
"text": "\\rules except wikilink\n\n\\define preview()\n<div class=\"tmap-save-canvas-preview\">\n <$transclude tiddler=<<snapshot>> /><br />\n Measures: <<width>> × <<height>>\n</div>\n\\end\n\n<table class=\"tmap-config-table\">\n<!--\n <<tmap-row type:\"input-text\"\n title:\"Name\"\n field:\"name\">\n-->\n<$macrocall $name=\"tmap-row\"\n type=\"input-text\"\n title=\"Name\"\n field=\"name\"\n descr=<<preview>> />\n</table>\n\n<fieldset><legend>Options</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-radio\"\n title:\"Action\"\n field:\"action\" \n selectFilter:\"[[download|Download]]\n [[wiki|Save in wiki]]\n [[placeholder|Use as placeholder for this view]]\"\n descr:\"Save the image by downloading it to your computer or\n save it as a tiddler in your wiki.<br /><br />\n A third option is to make TiddlyMap use this image as\n placeholder for the current view. Placeholders are used\n when tiddlers are exported in form of static html\n or when editing a tiddler while having the preview\n shown. In this case the title input is ignored.\">>\n </table>\n</fieldset>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog",
"text": "\\rules except wikilink\n\n<div class=<<classes>>>\n<$importvariables\n filter=\"[[$:/plugins/felixhayashi/tiddlymap/misc/macros]]\n [[$:/core/macros/tabs]]\">\n<$transclude tiddler=<<template>> mode=\"block\" />\n</$importvariables>\n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/welcome": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/welcome",
"subtitle": "{{$:/core/images/info-button }} Welcome",
"buttons": "ok",
"text": "\\rules except wikilink\n\nIt seems that you freshly installed TiddlyMap.\n\n* In case you need any help, please consult the [[online docs|http://tiddlymap.org#Documentation]] first.\n* You are welcome to create an [[issue|https://github.com/felixhayashi/TW5-TiddlyMap/issues]] at GitHub for any bug you discover.\n* Make sure to revisit the [[demo site|http://tiddlymap.org]] to see whether your version is up-to-date.\n* If you like TiddlyMap, please give it a star at [[GitHub|https://github.com/felixhayashi/TW5-TiddlyMap]] or tell your friends about it :)\n* ''Please note:'' TiddlyMap is distributed under the [[BSD 2-Clause License|http://opensource.org/licenses/BSD-2-Clause]], which belongs to the same license family, as the license used by TiddlyWiki. By using this plugin you agree to the product's [[License Terms|https://github.com/felixhayashi/TW5-TiddlyMap/blob/master/LICENSE]].\n\nEnjoy!\n\n---\n\nTiddlyMap will configure your wiki for optimal use. Everything can be changed back later by you, via the TiddlyWiki configurations panel, so no worries. If you checked some of the options below, please save & restart after closing this dialog.\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Optimize storyview\"\n field:\"config.storyview\"\n descr:\"Sets the storyview to 'top' for optimal scrolling.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Optimize sidebar\"\n field:\"config.sidebar\"\n descr:\"Sets sidebar layout to 'fixed-fluid' for larger editor.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Optimize navigation\"\n field:\"config.navigation\"\n descr:\"Sets navigation style to open tiddlers at top for better map navigation.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Create demo welcome map\"\n field:\"config.demo\"\n descr:\"Creates a little hello world welcome map for you.\">>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/widgetCodeGenerator": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/widgetCodeGenerator",
"subtitle": "{{$:/core/images/permalink-button}} Widget Code Generator",
"buttons": "close",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n Use the code below to embed a view in a tiddler.\n</div>\n\n<pre style=\"white-space: normal;\">\n<$tmap\n\n<$list filter=\"[<output>has[var.view]]\">\n view=\"<$view field='var.view' />\"</$list>\n<$list filter=\"[<output>field:var.click-to-use[true]]\">\n click-to-use=\"true\"</$list>\n<$list filter=\"[<output>has[var.editor]]\">\n editor=\"<$view field='var.editor' />\"</$list>\n<$list filter=\"[<output>has[var.width]]\">\n width=\"<$view field='var.width' />\"</$list>\n<$list filter=\"[<output>has[var.height]]\">\n height=\"<$view field='var.height' />\"</$list>\n<$list filter=\"[<output>has[var.class]]\">\n class=\"<$view field='var.class' />\"</$list>\n<$list filter=\"[<output>field:var.show-buttons[false]]\">\n show-buttons=\"false\"</$list>\n<$list filter=\"[<output>has[var.design]]\">\n design=\"<$view field='var.design' />\"</$list>></$tmap>\n</pre>\n\n<fieldset>\n <legend>Parameters</legend> \n <table class=\"tmap-config-table\">\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"View\"\n field=\"var.view\"\n nochoice=\" \"\n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"The view to bind the wiedget to\" />\n <<tmap-row type:\"input-select\"\n title:\"Editor bar\"\n field:\"var.editor\"\n selectFilter:\"[[|Hidden]]\n [[vis|Simple]]\n [[advanced|Advanced]]\"\n descr:\"Whether the widget should act as an editor or not.\">>\n <<tmap-row type:\"input-select\"\n title:\"Design\"\n field:\"var.design\"\n selectFilter:\"[[|Normal]]\n [[plain|Plain]]\"\n descr:\"Usually a header is displayed and borders. Plain\n design will only show the mere graph.\">>\n <<tmap-row type:\"input-text\"\n title:\"Height\"\n field:\"var.height\"\n descr:\"Graph's height in css units. Defaults to '300px'.\">>\n <<tmap-row type:\"input-text\"\n title:\"Width\"\n field:\"var.width\"\n descr:\"Graph's width in css units. Defaults to '100%'.\">>\n <<tmap-row type:\"input-text\"\n title:\"Class\"\n field:\"var.class\"\n descr:\"A custom class to apply your own css.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Click to use\"\n field:\"var.click-to-use\"\n default:\"false\"\n descr:\"A click is needed to enable the graph.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show buttons\"\n field:\"var.show-buttons\"\n default:\"true\"\n descr:\"Show or hide the graph's navigation buttons.\">>\n </table>\n</fieldset>"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter/close": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter/close",
"text": "\\rules except wikilink\n\n<$button class=\"tmap-dialog-button tmap-close-button\" tooltip=\"Close this dialog\">Close\n\n <!-- trigger dialog callback -->\n <$action-setfield $tiddler=<<result>> text=\"1\" />\n \n</$button>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok",
"text": "\\rules except wikilink\n\n<$button class=\"tmap-dialog-button tmap-ok-button\" tooltip=\"Confirm dialog\">OK\n\n <!-- trigger dialog callback -->\n <$action-setfield $tiddler=<<result>> text=\"1\" />\n \n</$button>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok_cancel": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok_cancel",
"text": "\\rules except wikilink\n\n<$transclude tiddler=\"$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok\" mode=\"inline\" />\n<$button class=\"tmap-dialog-button tmap-cancel-button\" tooltip=\"Close dialog without saving\">Cancel\n <!-- trigger dialog callback -->\n <$action-setfield $tiddler=<<result>> text=\"\" />\n</$button>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok_suppress": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok_suppress",
"text": "\\rules except wikilink\n\n<$set name=\"currentTiddler\" value=<<title>> >\n\n<$checkbox field=\"suppress\" checked=\"1\" unchecked=\"0\" default=\"0\"> Do not show this dialog again</$checkbox>\n<$button class=\"tmap-dialog-button tmap-ok-button\" tooltip=\"Confirm this dialog\">OK\n\n <!-- trigger dialog callback -->\n <$action-setfield $tiddler=<<result>> text=\"1\" />\n \n <!-- suppress dialog in the future -->\n <$action-sendmessage $message=\"tmap:tm-suppress-dialog\"\n dialog=<<templateId>>\n suppress={{!!suppress}} />\n \n</$button>\n\n</$set>"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter",
"text": "\\rules except wikilink\n\n\\define footer() $:/plugins/felixhayashi/tiddlymap/dialogFooter/$(buttons)$\n\n<$transclude tiddler=<<footer>> />\n\n<!-- we need this button to be able to close a tiddler from outside programmatically -->\n<$button class=\"tmap-hidden-close-button\" message=\"tm-close-tiddler\" />"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter/element_type_manager": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter/element_type_manager",
"text": "\\rules except wikilink\n\n<$button\n class=\"tmap-dialog-button tmap-save-button\"\n tooltip=\"Save the current changes\">Save\n <$action-sendmessage\n $message=\"tmap:tm-save-type-form\"\n mode=<<mode>>\n output=<<output>> />\n</$button>\n<$button\n class=\"tmap-dialog-button tmap-cancel-button\"\n tooltip=\"Cancel the most resent changes and exit\">Quit\n <$action-setfield $tiddler=<<result>> text=\"1\" />\n</$button>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/deleteType": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/deleteType",
"caption": "Removal",
"text": "\\rules except wikilink\n\n\\define manage-edge-types()\n <$macrocall $name=\"tmap-row\"\n type=\"input-checkbox\"\n title=\"Delete type\"\n field=\"temp.deleteType\"\n default={{!id}}\n readonly={{!!temp.idImmutable}}\n descr=\"If you want to delete this type, set this to true\n and click the save button afterwards. Predefined system\n types cannot be deleted.\" note=\"Consequently, all edges\n of this type will be deleted.\" />\n\\end\n\n\\define manage-node-types()\n <$macrocall $name=\"tmap-row\"\n type=\"input-checkbox\"\n title=\"Delete type\"\n field=\"temp.deleteType\"\n default={{!id}}\n readonly={{!!temp.idImmutable}}\n descr=\"If you want to delete this type, set this to true and\n click the save button afterwards. Predefined system\n types cannot be deleted.\" />\n\\end\n\n<table class=\"tmap-config-table\"><$macrocall $name=<<mode>> /></table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/description": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/description",
"caption": "Description",
"text": "\\rules except wikilink\n\n\\define manage-edge-types()\n <<tmap-row type:\"input-textarea\"\n title:\"Description\"\n field:\"description\"\n descr:\"An optional description for this type. The\n description will be displayed as tooltip when\n moving the mouse over an edge of this type.\">>\n\\end\n\n\\define manage-node-types()\n <<tmap-row type:\"input-textarea\"\n title:\"Description\"\n field:\"description\" \n descr:\"An optional description for this type.\">>\n\\end\n\n<table class=\"tmap-config-table\">\n <$macrocall $name=<<mode>> />\n</table>\n\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/generalSettings": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/generalSettings",
"caption": "General",
"text": "\\rules except wikilink\n\n\\define manage-edge-types()\n <<tmap-row type:\"input-text\"\n title:\"Label\"\n field:\"label\" \n descr:\"An optional alias used as edge-label.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show label\"\n field:\"show-label\"\n default:\"true\"\n descr:\"If unchecked, no edge label will be displayed.\">>\n\\end\n\\define manage-node-types()\n <$list filter=\"[<currentTiddler>!regexp:id[tmap:]]\">\n <<tmap-row type:\"input-textarea\"\n title:\"Scope\"\n field:\"scope\" \n descr:\"A filter expression that defines, which nodes inherit\n this node-type and its style.\">>\n </$list>\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\" \n title=\"Priority\"\n field=\"priority\"\n selectFilter=<<tmap \"scale\" \"100\">>\n descr=\"When a type has a a higher priority than another type,\n its style will override the other style\" />\n\\end\n\n<table class=\"tmap-config-table\">\n <$macrocall\n $name=\"tmap-row\"\n title=\"Identifier\"\n field=\"temp.newId\"\n type=\"input-text\"\n default={{!!id}}\n readonly={{!!temp.idImmutable}}\n descr=\"A unique identifier\"\n />\n <$macrocall $name=<<mode>> />\n</table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/overview": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/overview",
"caption": "Overview",
"text": "\\rules except wikilink\n\n\\define date(f) <$view field=$f$ format=\"date\" template=\"DDth mmm hh:mm:ss\"/>\n\n! <$link to={{!!typeTRef}}><$view field=\"id\" /></$link>\n\n<table class=\"tmap-key-value-table\">\n <tr>\n <th align=\"left\">Created on</th>\n <td>\n <<date \"created\">>\n </td>\n </tr>\n <tr>\n <th align=\"left\">Modified on</th>\n <td><<date \"modified\">></td>\n </tr>\n <tr>\n <th align=\"left\">Usage count</th>\n <td>\n <span class=\"tmap-edge-type-specific\">\n <$view field=\"temp.usageCount\" />\n </span>\n <span class=\"tmap-node-type-specific\">\n <$count filter={{!!scope}}>0</$count>\n </span>\n </td>\n </tr>\n</table>\n\n<$view field=\"description\">//No description available//</$view>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/styling": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/styling",
"caption": "Styling",
"text": "\\rules except wikilink\n\n\\define url()\n <$set\n filter=\"[<mode>prefix[manage-edge-types]]\"\n name=\"module\"\n value=\"edges\"\n emptyValue=\"nodes\">\n [[visjs.org|http://visjs.org/docs/network/$(module)$]]\n </$set>\n\\end\n\n<fieldset class=\"tmap-node-type-specific\">\n <legend>Icon Settings</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"TW-icon\"\n field:\"tw-icon\"\n descr:\"A tiddlywiki image reference.\n For example '$:/core/icon' for Movotun Jack.\">>\n <<tmap-row type:\"input-text\"\n title:\"FA-icon\"\n field:\"fa-icon\"\n descr:\"A Font Awesome icon code.\n For example 'f206' for the bicycle symbol.\">>\n </table>\n</fieldset>\n\n<fieldset><legend>Visjs styles</legend>\n <div class=\"tmap-flash-message tmap-info\">\n All visjs options below are documented at <<url>>.\n </div>\n <div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on\n the graph. Other options are visible, yet, inactive.\n </div>\n <$tmap-config\n mode=<<mode>>\n inherited=\"vis-inherited\"\n extension=\"style\" />\n</fieldset>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager",
"subtitle": "{{$:/core/images/tag-button}} <<topic>>",
"buttons": "element_type_manager",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n\n\\define defaultTab()\n$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/overview\n\\end\n\n\\define settingsTab()\n$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/generalSettings\n\\end\n\n\\define tabsFilter()\n[all[shadows]prefix[$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/]]\n\\end\n\n\\define searchFilter()\n$(searchSelector)$\n+[sort[title]nsort[priority]]\n+[removeprefix<typeRootPath>removeprefix[/]]\n+[search:title{$:/temp/tmap/MapElementTypeSearch}]\n\\end\n\n\\define managerClass() tmap-$(mode)$\n\n\\define typePath() $(typeRootPath)$/$(id)$\n\n<div id=\"tmap-element-type-manager\" class=<<managerClass>>>\n <div>\n <div class=\"tmap-searchbar\">\n <$edit-text\n focus=\"true\"\n tiddler=\"$:/temp/tmap/MapElementTypeSearch\"\n type=\"text\"\n tag=\"input\"\n default=\"\" />\n <$list filter=\"[{$:/temp/tmap/MapElementTypeSearch}regexp[.+]]\n +[addprefix[/]]\n +[addprefix<typeRootPath>]\n +[!is[tiddler]!is[shadow]]\">\n <$button tooltip=\"Create a new type of this name\">\n {{$:/core/images/new-button}}\n <$action-sendmessage\n $message=\"tmap:tm-create-type\"\n mode=<<mode>>\n id={{$:/temp/tmap/MapElementTypeSearch}}\n output=<<output>> />\n <$action-setfield $tiddler=\"$:/temp/tmap/MapElementTypeSearch\" text=\"\" />\n </$button>\n </$list>\n\n </div>\n <ul>\n <$list\n filter=<<searchFilter>>\n emptyMessage=<<noTypeFound>>\n variable=\"id\">\n <li>\n <span class=\"tmap-ranking tmap-node-type-specific\">\n # <$view tiddler=<<typePath>> field=\"priority\">1</$view>\n </span>\n <$button class=\"tc-btn-invisible tmap-link\"><<id>>\n <$action-setfield\n $tiddler=<<qualify \"$:/state/tabs/MapElementTypeManager\">>\n text=<<defaultTab>> />\n <$action-sendmessage\n $message=\"tmap:tm-load-type-form\"\n id=<<id>>\n mode=<<mode>>\n output=<<output>> />\n </$button>\n </li>\n </$list>\n </ul>\n </div>\n <div>\n <$reveal type=\"nomatch\" text=\"\" default={{!!id}} >\n <$macrocall\n $name=\"tabs\"\n default=<<defaultTab>>\n state=\"$:/state/tabs/MapElementTypeManager\"\n tabsList=<<tabsFilter>> />\n </$reveal>\n <$reveal type=\"match\" text=\"\" default={{!!id}} >\n <div class=\"tmap-flash-message tmap-info\">\n Please select a type from the list or create a new one by\n entering the type name in the search field on the left.\n </div>\n <div class=\"tmap-flash-message tmap-info tmap-node-type-specific\">\n The number next to the node-type label represents it's priority.\n </div>\n </$reveal>\n </div>\n</div>\n"
},
"$:/plugins/felixhayashi/tiddlymap/editor/contextMenu/node": {
"title": "$:/plugins/felixhayashi/tiddlymap/editor/contextMenu/node",
"text": "\\define single()\n <$list filter=\"\n [[tmap:tm-toggle-central-topic, $:/core/images/star-filled, Toggle central topic]]\n [[tmap:tm-delete-element, $:/core/images/delete-button, Delete node]]\">\n <$button class=\"tc-btn-invisible\">\n <$action-sendmessage $message=<<tmap \"splitAndSelect\" \", \" \"0\">> />\n <$transclude tiddler=<<tmap \"splitAndSelect\" \", \" \"1\">> />\n <<tmap \"splitAndSelect\" \", \" \"2\">>\n </$button>\n </$list>\n\\end\n\n\\define multi()\n <$list filter=\"\n [[tmap:tm-delete-element, $:/core/images/delete-button, Delete selected nodes]]\">\n <$button class=\"tc-btn-invisible\">\n <$action-sendmessage $message=<<tmap \"splitAndSelect\" \", \" \"0\">> />\n <$transclude tiddler=<<tmap \"splitAndSelect\" \", \" \"1\">> />\n <<tmap \"splitAndSelect\" \", \" \"2\">>\n </$button>\n </$list>\n\\end\n\n<div class=\"tc-drop-down\">\n <$macrocall $name=<<mode>> />\n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/misc/advancedEditorBar": {
"title": "$:/plugins/felixhayashi/tiddlymap/misc/advancedEditorBar",
"text": "\\rules except wikilink\n\\define showEdgeField() show-$(curEdgeId)$\n\n<!-- === View Switcher ========================================== -->\n\n<div class=\"tmap-menu-bar\">\n View:\n <$reveal type=\"match\" text=\"false\" default=<<isViewBound>> >\n <$select\n tiddler=<<viewHolder>>\n field=\"text\"\n default=<<viewLabel>> >\n <$list filter=<<tmap \"option\" \"selector.allViewsByLabel\">> >\n <option value={{!!title}}>\n <$view tiddler={{!!title}} field=\"title\" />\n </option>\n </$list>\n </$select>\n </$reveal>\n <$reveal type=\"match\" text=\"true\" default=<<isViewBound>> >\n <b><<viewLabel>></b>\n </$reveal>\n\n<!-- === Menu =================================================== -->\n\n <$button\n popup=<<qualify \"$:/temp/menu\">>\n tooltip=\"Open the Menu\">{{$:/core/images/menu-button}}\n </$button>\n\n <$reveal type=\"popup\" position=\"below\" state=<<qualify \"$:/temp/menu\">> >\n <div class=\"tc-drop-down\">\n <a href=\"http://tiddlymap.org#Documentation\" target=\"_blank\">\n {{$:/core/images/info-button}} Open online help\n </a>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-create-view\">\n {{$:/core/images/new-button}} Create new view\n </$button>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-generate-widget\">\n {{$:/core/images/permalink-button}} Grab widget code\n </$button>\n <div class=\"tmap-list-separator\">Global configurations:</div>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-configure-system\">\n {{$:/core/images/options-button}} Configure TiddlyMap\n </$button>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-manage-edge-types\">\n <span class=\"tmap-unicode-icon\">◭</span> Manage edge-types\n </$button>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-manage-node-types\">\n <span class=\"tmap-unicode-icon\">▢</span> Manage node-types\n </$button>\n <div class=\"tmap-view-actions\">\n <div class=\"tmap-list-separator\">Actions for this view:</div>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-edit-view\">\n {{$:/core/images/options-button}} Configure view\n </$button>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-rename-view\">\n {{$:/core/images/tag-button}} Rename view\n </$button>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-delete-view\">\n {{$:/core/images/delete-button}} Delete view\n </$button>\n </div>\n </div>\n </$reveal>\n\n<!-- === Neighbourhood menu ===================================== -->\n\n <$reveal\n type=\"match\"\n text=\"true\"\n default=<<tmap \"option\"\n \"config.sys.editorMenuBar.showNeighScopeButton\">>>\n <$button\n class=<<neighScopeBtnClass>>\n tooltip=\"Change the neighbourhood scope\"\n popup=<<qualify \"$:/temp/neighScope\">>>\n ☀\n </$button>\n </$reveal>\n\n <$reveal type=\"popup\" position=\"below\" state=<<qualify \"$:/temp/neighScope\">> >\n <div class=\"tc-drop-down\">\n <div class=\"tmap-list-separator\">Neighbourhood scope</div>\n <$button class=\"tc-btn-invisible\">None\n <$action-setfield\n $tiddler=<<viewRoot>>\n config.neighbourhood_scope=\"\" />\n </$button>\n <$list filter=\"[[1|1 step distance]]\n [[2|2 step distance]]\n [[3|3 step distance]]\n [[4|4 step distance]]\n [[5|5 step distance]]\">\n <$button class=\"tc-btn-invisible\">\n <<tmap \"splitAndSelect\" \"|\" \"1\">>\n <$action-setfield\n $tiddler=<<viewRoot>>\n config.neighbourhood_scope=<<tmap \"splitAndSelect\" \"|\" \"0\">> />\n </$button>\n </$list>\n <$button class=\"tc-btn-invisible\">No limit\n <$action-setfield\n $tiddler=<<viewRoot>>\n config.neighbourhood_scope=\"100\" />\n </$button>\n <div class=\"tmap-list-separator\">Neighbourhood traversal</div>\n <$radio field=\"config.neighbourhood_directions\" value=\"in\"> Incoming</$radio><br />\n <$radio field=\"config.neighbourhood_directions\" value=\"out\"> Outgoing</$radio><br />\n <$radio field=\"config.neighbourhood_directions\" value=\"\"> Both</$radio>\n <div class=\"tmap-list-separator\">Other</div>\n <$checkbox field=\"config.show_inter_neighbour_edges\"\n checked=\"true\" unchecked=\"false\"> Inter-neighbour edges</$checkbox>\n\n </div>\n </$reveal>\n\n<!-- === Export menu ============================================ -->\n\n <$reveal\n type=\"match\"\n text=\"true\"\n default=<<tmap \"option\" \"config.sys.editorMenuBar.showScreenshotButton\">>>\n <$button tooltip=\"Open the map-export menu\" popup=<<qualify \"$:/temp/mapExport\">>>\n {{$:/core/images/download-button}}\n </$button>\n </$reveal>\n\n <$reveal type=\"popup\" position=\"below\" state=<<qualify \"$:/temp/mapExport\">>>\n <div class=\"tc-drop-down\">\n <$button\n class=\"tc-btn-invisible\"\n tooltip=\"Export the graph and all its elements\n in form of a JSON file\">\n {{$:/core/images/permalink-button}} Save as JSON file\n <$action-sendmessage\n $message=\"tmap:tm-download-graph\"\n view=<<viewLabel>> />\n </$button>\n <$button\n class=\"tc-btn-invisible\"\n tooltip=\"Create a png image to download or save it\n as image or view-placeholder in your wiki\">\n {{$:/core/images/palette}} Save as png image\n <$action-sendmessage $message=\"tmap:tm-save-canvas\" />\n </$button>\n </div>\n </$reveal>\n\n<!-- === Raster menu ============================================ -->\n\n <$reveal\n type=\"match\"\n text=\"true\"\n default=<<tmap \"option\" \"config.sys.editorMenuBar.showRasterMenuButton\">>>\n <$button\n tooltip=\"Change the raster of your map\"\n class=<<rasterMenuBtnClass>>\n popup=<<qualify \"$:/temp/rasterMenu\">>>\n ⩩\n </$button>\n </$reveal>\n\n <$reveal type=\"popup\" position=\"below\" state=<<qualify \"$:/temp/rasterMenu\">>>\n <div class=\"tc-drop-down\">\n <$button class=\"tc-btn-invisible\">Disable raster\n <$action-setfield\n $tiddler=<<viewRoot>>\n config.raster=\"\" />\n </$button>\n <div class=\"tmap-list-separator\">Raster sizes</div>\n <$list filter=\"[[50|50px]]\n [[75|75px]]\n [[100|100px]]\n [[150|150px]]\">\n <$button class=\"tc-btn-invisible\">\n <<tmap \"splitAndSelect\" \"|\" \"1\">>\n <$action-setfield\n $tiddler=<<viewRoot>>\n config.raster=<<tmap \"splitAndSelect\" \"|\" \"0\">> />\n </$button>\n </$list>\n </div>\n </$reveal>\n\n</div>\n"
},
"$:/plugins/felixhayashi/tiddlymap/misc/focusButton": {
"title": "$:/plugins/felixhayashi/tiddlymap/misc/focusButton",
"text": "\\define filter() [list[$:/temp/tmap/nodes/$(viewLabel)$]search:title{$:/temp/tmap/bar/search}]\n\\define concat(str) $str$\n\n\\define state() $(widgetPopupsPath)$/focus\n\n<div class=\"tmap-focus-button\">\n <$reveal type=\"match\" state=<<state>> text=\"\">\n <$button\n tooltip=\"Zoom on a specific node\"\n class=<<tv-config-toolbar-class>>>{{$:/core/images/advanced-search-button}}\n <$action-setfield $tiddler=\"$:/temp/tmap/bar/search\" text=\"\" />\n <$action-setfield $tiddler=<<state>> text=\"1\" />\n </$button>\n </$reveal>\n <$reveal type=\"nomatch\" state=<<state>> text=\"\">\n <$button\n tooltip=\"Close zoom popup\"\n class=<<tv-config-toolbar-class>>>{{$:/core/images/advanced-search-button}}\n <$action-setfield $tiddler=<<state>> text=\"\" />\n </$button>\n <div class=\"tmap-search-dropdown\">\n <div class=\"tc-drop-down\">\n <$edit-text\n focus=\"true\"\n tiddler=\"$:/temp/tmap/bar/search\"\n field=\"text\"\n type=\"text\"\n tag=\"input\"\n default=\"\" />\n <small><$count filter=<<filter>> /> results</small>\n <hr />\n <div class=\"tmap-very-small-list\">\n <$list filter=<<filter>>\n variable=\"item\"\n emptyMessage=\"//No results//\">\n <$button\n class=\"tc-btn-invisible\"\n message=\"tmap:tm-focus-node\"\n param=<<item>>>\n <$view tiddler=<<item>> field=\"title\" />\n </$button>\n </$list>\n </div>\n </div>\n </div>\n </$reveal>\n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/hook/editor": {
"title": "$:/plugins/felixhayashi/tiddlymap/hook/editor",
"caption": "Map",
"tags": "$:/tags/SideBar",
"text": "\\define width() calc(100% - 15px)\n\n<div class=\"tmap-mobile-editor\">\n <div class=\"tmap-flash-message tmap-warning\">\n The editor is not displayed in mobile mode.\n </div>\n</div>\n<div class=\"tmap-desktop-editor\">\n <$tiddlymap\n class=\"tmap-sidebar-map-editor\"\n editor=\"advanced\"\n object-id=\"main_editor\"\n click-to-use=\"false\">\n </$tiddlymap>\n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/hook/liveTab": {
"title": "$:/plugins/felixhayashi/tiddlymap/hook/liveTab",
"caption": "Live",
"text": "\\define width() calc(100% - 15px)\n\n<div class=\"tmap-mobile-editor\">\n <div class=\"tmap-flash-message tmap-warning\">\n The live tab is not displayed in mobile mode.\n </div>\n</div>\n<div class=\"tmap-desktop-editor\">\n <$set name=\"view\"\n filter=\"[{$:/temp/tmap/currentTiddler}get[tmap.open-view]]\"\n emptyValue=<<tmap \"option\" \"config.sys.liveTab.fallbackView\">>>\n <div>\n <$tiddlymap\n view=<<view>>\n click-to-use=\"false\"\n refresh-triggers=\"$:/temp/tmap/currentTiddler\"\n object-id=\"live_tab\">\n </$tiddlymap>\n </div>\n </$set> \n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/misc/quickConnectButton": {
"title": "$:/plugins/felixhayashi/tiddlymap/misc/quickConnectButton",
"tags": "$:/tags/ViewToolbar",
"description": "{{$:/language/Buttons/TiddlyMap/Hint}}",
"caption": "{{$:/plugins/felixhayashi/tiddlymap/icon}} {{$:/language/Buttons/TiddlyMap/Caption}}",
"text": "\\define buttonClass() $(tv-config-toolbar-class)$ $(additional-classes)$\n\n\\define nonExistentItem()\n<<item>> <span style=\"color: #9E9E9E\">(will be created)</span>\n\\end\n\n\\define noConnectionsMsg()\n<tr><td colspan=\"4\">//No connections found!//</td></tr>\n\\end\n\n\\define normalSearchFilter()\n[!is[system]!has[draft.of]search:title{$:/temp/quickConnectSearch}sortcs[title]limit[50]]\n\\end\n\n\\define regexSearchFilter()\n[!is[system]!has[draft.of]regexp{$:/temp/quickConnectSearch}sortcs[title]limit[50]]\n\\end\n\n\\define showButton(state)\n<$button set=\"$:/temp/tmap/state/popup/quickConnect\"\n setTo=\"$state$\" tooltip={{$:/language/Buttons/TiddlyMap/Hint}} \n aria-label={{$:/language/Buttons/TiddlyMap/Caption}}\n class=<<buttonClass>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">{{$:/plugins/felixhayashi/tiddlymap/icon}}</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TiddlyMap/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n\\define searchResults()\n<td>\n <$button tooltip=\"Create incoming edge\">\n <<tmap \"option\" \"misc.arrows.in\">>\n <$action-sendmessage $message=\"tmap:tm-create-edge\"\n from=<<item>>\n to=<<currentTiddler>>\n force=\"true\"\n label={{$:/temp/quickConnectSearch/type}}\n view={{$:/temp/quickConnectSearch/view}} />\n </$button>\n</td>\n<td>\n <$button tooltip=\"Create outgoing edge\">\n <<tmap \"option\" \"misc.arrows.out\">>\n <$action-sendmessage $message=\"tmap:tm-create-edge\"\n from=<<currentTiddler>>\n to=<<item>>\n force=\"true\"\n label={{$:/temp/quickConnectSearch/type}}\n view={{$:/temp/quickConnectSearch/view}} />\n </$button>\n</td>\n<td>\n <$list\n filter=\"[<item>is[tiddler]]\"\n emptyMessage=<<nonExistentItem>>>\n <$view tiddler=<<item>> field=\"title\" />\n </$list>\n</td>\n\\end\n\n\\define hidePopup()\n<$macrocall $name=\"showButton\" state=<<qualify>> />\n\\end\n\n\\define showPopup()\n<$set name=\"additional-classes\" value=\"tmap-active-button\">\n <$macrocall $name=\"showButton\" state=\"\" />\n</$set>\n<$set\n name=\"searchFilter\"\n filter=\"[field:title[$:/state/tmap/tid-toolbar]has[re-filter]]\"\n value=<<regexSearchFilter>>\n emptyValue=<<normalSearchFilter>>>\n<div class=\"tmap-quick-connect tc-reveal tc-popup\">\n <div class=\"tc-drop-down\">\n <div class=\"title\">Create connection</div>\n <table class=\"tmap-quick-connect-search-bar\">\n <tr>\n <td>Type:</td>\n <td>\n <$edit-text\n tiddler=\"$:/temp/quickConnectSearch/type\"\n field=\"text\"\n type=\"text\"\n tag=\"input\"\n default=\"\" />\n <$select tiddler=\"$:/temp/quickConnectSearch/type\" default=\"\">\n <option></option>\n <$list filter=<<tmap \"option\" \"selector.allEdgeTypesById\">>>\n <option>{{!!title}}</option>\n </$list>\n </$select>\n </td>\n </tr>\n <tr>\n <td>Search:</td>\n <td>\n <$edit-text tiddler=\"$:/temp/quickConnectSearch\" type=\"text\" tag=\"input\" default=\"\"></$edit-text>\n <$checkbox\n tiddler=\"$:/state/tmap/tid-toolbar\"\n field=\"re-filter\"\n checked=\"1\"\n unchecked=\"\"\n default=\"\"> regexp\n </$checkbox>\n<!--\n <small>(<$count filter=<<searchFilter>> /> results)</small>\n-->\n </td>\n </tr>\n </table>\n <table class=\"tmap-create-connection-table\">\n <tr>\n <td colspan=\"2\">\n <table class=\"tmap-very-small-list\">\n <$list\n filter=<<searchFilter>>\n variable=\"item\">\n <tr><<searchResults>></tr>\n </$list>\n <tr>\n <$list filter=\"[{$:/temp/quickConnectSearch}regexp[.+]] -[is[tiddler]]\" variable=\"item\">\n <<searchResults>>\n </$list>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n <div class=\"title\">Existing Connections</div>\n <div class=\"tmap-quick-connect-existing-bar\">\n <$select\n tiddler=\"$:/state/tmap/tid-toolbar\"\n field=\"direction\"\n default=\"both\">\n <option value=\"both\">both</option>\n <option value=\"in\">incoming</option>\n <option value=\"out\">outgoing</option>\n </$select>\n <$checkbox\n tiddler=\"$:/state/tmap/tid-toolbar\"\n field=\"filter.links\"\n checked=\"-[[tw-body:link]]\"\n unchecked=\"\"\n default=\"\"> hide links\n </$checkbox>\n </div>\n <table class=\"tmap-connection-table\">\n<!--\n <tr>\n <th></th>\n <th>Tiddler</th>\n <th>Type</th>\n <th></th>\n </tr>\n-->\n \n <$tmap-connections\n filter=<<tmap mergeFields \"$:/state/tmap/tid-toolbar\" \"filter.\">>\n direction={{$:/state/tmap/tid-toolbar!!direction}}\n emptyMessage=<<noConnectionsMsg>>>\n <tr>\n <td title=<<direction>>><<directionSymbol>></td>\n <td><$link to=<<neighbour>>><$view field=\"title\" /></$link></td>\n <td><<edge.type>></td>\n <td>\n <$button\n tooltip=\"Delete this connection\"\n class=\"tc-btn-invisible\">{{$:/core/images/close-button}}\n <$action-sendmessage $message=\"tmap:tm-remove-edge\"\n id=<<edge.id>>\n from=<<edge.from>>\n to=<<edge.to>>\n type=<<edge.type>> />\n </$button>\n </td>\n </tr>\n </$tmap-connections>\n </table> \n </div>\n</div>\n</$set>\n\\end\n\n<$list filter=\"[all[current]is[tiddler]]\"><$list filter=\"[{$:/temp/tmap/state/popup/quickConnect}prefix<qualify>]\" variable=\"item\" emptyMessage=<<hidePopup>>><<showPopup>></$list></$list>"
},
"$:/plugins/felixhayashi/tiddlymap/media/fullscreen.png": {
"title": "$:/plugins/felixhayashi/tiddlymap/media/fullscreen.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffARwOKQxPfTsHAAAEcUlEQVRIx72XX0xTZxjGn+c9JcYQ50qM5RjKkOOG1NQEQiMV1tkLIbLsypCahsTojIkX6kgBr7aG7Wo6ou7STHbnjdGb/Ymb2ABODdiIxKR/IdoeR1PIKJAZdZntLnZq0CEWtHtuzjk57/l+3/e9J8/7fkQB8vv9DIfDHyqK8nEul2sSkS0AzABAMkNyAsBNAD9qmna9t7c397oxudzLXbt2icVi+YxkH0mQ/4YvdRWRxZ/6EonEmcHBweyKwR6P5wCAfhEBSWzatClls9mS27ZtS1dVVc1v3LgxAwDT09PmBw8erI9Go5ZIJFKZSqVUEUE2mwXJg/39/d8XDN63b9+XAD4nie3bt0dbWlpC9fX1eiFpGR8ftwYCAVsoFKoxdumrc+fOffFynLIE9AyAHpLYvXv3yNGjR4dUVV1AgSovL19wOp2Tjx49QiKRqCD5kcPhMAeDwSuvBHs8nq9FxEcSXq93wOPx3MUqZbfbf1+zZs2f0Wi0mmSjw+EoDQaDV/8D9ng8B0ieFBHs37//17a2tjDeUJqmzZSWls6HQiFNUZQmh8ORvH379t3nOW5vb1dMJtPfJLFnz56bHR0dQQDwer3HlhrwwoUL3y5+fl3cpUuXGoaHh3cCQCqVMl28ePGZAICiKMdJwm63R/PQt6m9e/cGbTZbhCRUVT0OACa/3894PN4HAK2traFCVriaHXC5XKFYLLYVQJ/f7z8tsVjMBQBWqzVVV1eno0iqra19qKpqSkSwsLDgEpJtJFFbW5tEkaVpWlJEUFJS0iYkdxrgdLHB1dXVacNenSaS75NEVVXV/EpzW2jO87JarfOGp39gImkWEeS9t5gqKyvLGGCzKV8E/i/lq5jkcrkMSUxPT5uLDZ2dnTWLCEQkIyISFxEkk8n1Lwd6vd5jr3Kl5fSq76amptYbFSsmInKLJOLxuKXYK9Z13WKAbwnJnwAgGo1WFhucTCYrFUUBgJ+loqJimCTS6bR67969imJBJyYmKmZnZ1URgcvlum7q7e3NHT582Aegb3Bw0Ga32x8ulbPVVKfFunPnjk1EkMvlfG63OysAkMlkzhrbvfXy5csNb3u1gUCg4f79+1sB4MmTJ2df6LmOHDlyUETOK4qC9vb2X5qbm6NvAzo2NlYzMDDQShLZbPbQiRMnzr/QgQSDwbEdO3aUkmyKRCJb1q1bN1dZWfnHm0IDgUCr8Sef6unpOblkzzU6Onq1sbHRTLIxEolsefr06bOampqp1UCHhoYabty44Tbyerarq8u3bJc5MjJyxel0liqK0qTrulXX9XfXrl3714YNGwrqNCcnJ63Xrl1zhsPhOsMeT/l8Pl/BDX13d/enAL4zLA4WiyWlaVpi8+bNaVVVF8rKyjJ5G5yZmXknkUhYdF1/b25uTs2fOkge6uzsPL/iI4zf75fHjx93KoryjclkgtGfgSQMI0B+YovvSXbV19efdrvdKz/CvDyBbDbbTPITkjtFRBOR54ZPclJEbgL4weFw/LYcMK9/AFcdm7xTEIntAAAAAElFTkSuQmCC"
},
"$:/plugins/felixhayashi/tiddlymap/media/halfscreen.png": {
"title": "$:/plugins/felixhayashi/tiddlymap/media/halfscreen.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffBAgRIDS2XJMlAAAEdklEQVRIx72XX2xTZRjGn+f9TiAEGHYhlMIObut0dGTAQlP2R2e9GUmNN0vYRrkgICEhIeDSdXeaE70SJIKXZNM7bkjmhX+CMgZVM3BpGIHM9nQOtlO0ac3oSiRkxlEvPF0AYXaw+lydnO/L+X3v95687/MSRcgwDMZisdeVUm/l8/kWkjUAHCRBMgvgF5LDAL5yu90/GIaR/69vcqFFv98vTqfzXRE5CQDkP9tF5LF9IjK/Zis0NTV16vLlyw8XDe7s7NxP8jM7KmzcuDHl8XisLVu2pCsrK3Pr1q3LAkAmk3FMTk6uMU3TaZrmplQq5SKJfD4Pkgf6+/s/Lxq8Z8+eDwC8BwDbtm0z29rafm5oaEgWk5YbN27oQ0NDdWNjY7X2zXx45syZ95/cp5580dXVdYpkLwC0tbX9dOTIkYjL5bqHIuV0Ou81NjZO3L9/H5OTkxUk3/D5fI5oNHr+meCurq6PSIYAIBgMDnZ0dFzHc6q+vv7X5cuX/5FIJKpJNnq93pXRaPTCv8CdnZ37ReQ4Sezbt++7QCAQwwvK7Xb/vmrVqtzY2JhbKdXi8/mskZGR6/M53r17t9I07S+SCAQCw3v37o0uBhAMBo8+7f3Zs2c/BYCBgQFvJBJpBoBUKqWdO3duTgBA07RjJLF161ZzsdBi1N7eHq2rq4uLCDZs2HAMAGgYBhOJxEMACIfDX2zfvj35oqDCDRQiBoBYLFbR19fXDgBlZWUipmm2AoCu66mlgD5LHo/njsvlSimlkMvlWkVEAiICj8djocSqqamxSGLZsmUBIdlsnyhdanBVVVVaRCAiTRqAV0QElZWVuaUCPJrbR6Xres6u6a9qIuIgiULtLaXKy8uzSikAcGiFJvB/ab7DAciKCDKZjKPU0Lt37zrsHGeF5DhJWJa1ZqkAwWDw6NOqWSqVWmPfcEJE5ApJjI+PO0sdcTKZdNoRXxGSX5OEaZqbSg22LGuT3aO/EV3XvyeJdDrtunnzZkWpoBMTExXT09MuEUFra+sPmmEY+UOHDoVInoxEInX19fV3nrc2L6Rr167ViQjy+XzI7/c/FADIZrOnASAej28eGBjwLnW0Q0ND3tu3b28midnZ2dOPea7Dhw8fEJF+pRQ6Ojq+bWlpMZcCOjo6Wjs4OLjLNoAHe3t7+x9zINFodHTnzp0rRaQlHo/XrF69ekbX9ekXhV66dGmXbX9PhMPh40/1XCMjIxeampocJBvj8XjN7OzsXG1t7W/PA41EIt7h4eE37UhP9/T0hBZ0mVevXj3f3Ny8UinVYlmWnkwmX1qxYsWfa9euLcpp3rp1S7948WJTPB5vsMvjiVAoFCra0IfD4XdI9hWmhPXr16eqq6unqqqq0i6X6155eXnW/jEdmUymzLIsZzKZfHlmZsZVqMkkD3Z3d/cveoQxDEMePHjQLSIfa5oGkrArz/wYU3guNBu7+/Ts2LHjE7/fv/gR5skDzM3NvSYibwNoVkq5STqUUiCZJTmhlBrO5/Nf+ny+HxcCFvQ3ae6MHdgDqpkAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/tiddlymap/icon": {
"title": "$:/plugins/felixhayashi/tiddlymap/icon",
"tags": "$:/tags/Image",
"text": "<svg\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n xmlns:cc=\"http://creativecommons.org/ns#\"\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n class=\"tc-image-tiddlymap-button tc-image-button\"\n version=\"1.1\"\n width=\"22pt\"\n height=\"22pt\"\n viewBox=\"0 0 128 128\">\n <defs\n id=\"defs4\">\n <marker\n refX=\"0\"\n refY=\"0\"\n orient=\"auto\"\n id=\"Arrow1Lend\"\n style=\"overflow:visible\">\n <path\n d=\"M 0,0 5,-5 -12.5,0 5,5 0,0 z\"\n transform=\"matrix(-0.8,0,0,-0.8,-10,0)\"\n id=\"path3850\"\n style=\"fill-rule:evenodd;stroke:#000000;stroke-width:1pt\" />\n </marker>\n <marker\n refX=\"0\"\n refY=\"0\"\n orient=\"auto\"\n id=\"Arrow1Lstart\"\n style=\"overflow:visible\">\n <path\n d=\"M 0,0 5,-5 -12.5,0 5,5 0,0 z\"\n transform=\"matrix(0.8,0,0,0.8,10,0)\"\n id=\"path3847\"\n style=\"fill-rule:evenodd;stroke:#000000;stroke-width:1pt\" />\n </marker>\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4329\" />\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4321\" />\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4315\" />\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4307\" />\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4299\" />\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4293\" />\n </defs>\n <g\n transform=\"translate(0,-1024.5289)\"\n id=\"layer1\">\n <path\n d=\"m 17.867073,4.5821643 a 3.7249374,3.7249374 0 1 1 -7.449875,0 3.7249374,3.7249374 0 1 1 7.449875,0 z\"\n transform=\"matrix(-6.3328802,0,0,6.2775831,193.9581,1100.3667)\"\n id=\"path4139-1-14\"\n style=\"fill-opacity:1;fill-rule:nonzero\" />\n <path\n d=\"M 77.450496,1064.5069 C 58.849552,1025.9634 15.704158,1023.3858 2.8821873e-7,1034.558 L 0.02388589,1035.2674 C 24.502636,1022.2072 44.810725,1042.1507 60.163934,1074.112 z\"\n id=\"path4337\"\n style=\"fill-opacity:1;stroke-width:0.58181816;stroke-miterlimit:4;stroke-dasharray:none;marker-start:none;marker-end:none\" />\n <path\n d=\"m 12.878637,11.280739 4.75937,-2.7478243 4.759371,-2.7478236 0,5.4956479 0,5.495648 -4.759371,-2.747824 z\"\n transform=\"matrix(4.6545455,0,0,4.6545455,-13.580429,1027.7638)\"\n id=\"path3004\"\n style=\"fill-opacity:1;fill-rule:nonzero\" />\n </g>\n <metadata\n id=\"metadata3772\">\n <rdf:RDF>\n <cc:Work\n rdf:about=\"\">\n <dc:title></dc:title>\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n </cc:Work>\n </rdf:RDF>\n </metadata>\n</svg>\n"
},
"$:/plugins/felixhayashi/tiddlymap/media/surface.png": {
"title": "$:/plugins/felixhayashi/tiddlymap/media/surface.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAAmALMAAQfdEQQAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfeDBYVBDLiNMeiAAAFvUlEQVRIx7WXbUxTZxTH/+c8VwQLlAKuEotF2mJRlMFEqeCUiMzojH7YEjMSlM1EY2Z04vbBbUrcZqbOTZfFOKMOcWRuZMyoS4xUN16EMUVUMkAFJ6VQkdFSoOIL9O5DBREFX/l/vOf+z+88z715znkITyMZZMjDTLfEC0iWE0hAD0DlZhkC7HCDagWoxA0cvzq/uwgE+UkpachoJjhiCta6mXYwATLfN7AnM923MzGIuC8hARn/lN3ZiUy4nxlsyEM6QAcgPECdb6TNFDTbMn10UnOkMsap9dE5AMDSVaeqdlYoz9qL1WftReOuuS6HMDHcshsEfrdyXscPTw3W/cabieRPmYAEdcrltLD3q2ar32x4mq9S2HIi9LBl78QzracnMDEI9FlFin3jE8G6PN5JLK9hAt4Zv6ps0+TvyvAc+rLmo+m5DfungwhEvKs8uWVt/7h4CPorb2VJzmACPpy01bzO+MUFPKcSg+c2+kijOs85zoQTKF6TplA0ZrvyHwEb8pAOgW0kgE8m7zyZHr6uGi+o6IDpLQEjAp1/tZ7WMUkJY5f6WRqzOy48AP8CETSCylkAS3VrS1YbNl7CS9IkZcx/rm5XT1XHxVBBvCh+gfPzqlzIDAD6kVgDBhJGp1z+OPLrc3jJWhOx6ZwpKKmGiGEL1q4BAIYMYqYdBCBt/OoqDJPeGpteJZEEiUfsgAxi/TG8DgAG/yjb7FcWNAwXOD5oljVcMcEmSELSH/rXmYjngwnTgmZZHmeIPaFcPlTCJ8UH/GwWIoYkjZzPRDSDQJgWNKt54Is513drb3W7vIdK5uru9BkslnN9t3amWZPaB/aPaxYQYBImBsFAxJiojHEONB6u/z5mpPC+N1jihQXRi72Fz92hCrPfaQnIub5bCwB6/ygnEYNBEczEKiLGuPtnb3/dvN2o8mbvQRO33WtVyPLgjWhP7ZbEcF9jY74tzwAAY701DokkCJJU7KmAHzEtK01OjvR/tcFLeN/trXjganUKY7PSS9X5uPiMk2PSetzdYol2RUWdq0b94JD2dDKGDAcRw9pVp+pvAoAsk9m8Ur+heE/tlsSB367tXqsiy2Q26xTG5t4V9fdH+EU1laTcyE4NW1Xffq/Nd2FB9GLbbatKIgFBwiEJ4qtMrK5uv6TU+OgcM82aVIPfpKYsk9kMAKlhq+pTw1bVx55QLldIfl06hbG5zlWjLkq25vQWN9OsSV1YEL14iXZFRb4tzxDhF9XnB4CYgPg6ALjmqlF61oorDOZSAqPcUaoGgJX6DcUHTafMA7fu/DznvpX6DcUyZPRCe1WUbM0J9Aru3FO7JVGGjP7Q3uKyTGZzVUelmjxbXUqTT/rOkmTpT51vpC13RkkuhlHrK5e93XCrPkR298zmyrmdhTIR/r1VG3KmJV8zXNCKtjJNU5c1RJDAJNOcIgZBJlAGg/Czdf/E4QKbbx6dyCQgwBmZlOn2dKc2+y4AOGsvMn57ZfPUlw3NseydeslZbiQQ7tQH7Orrx1W5kEPTfBuIeFF158XQwJHBbUa/6NaXAT118/iEvKZDSUwCIHn5TylHyx+aQBoPuSpC05QKJk4osxfqVV7BbUa/Ka0vCs1p2PsGEwPg7dlxv2977MxlzW7PH7dMpSJQ/Fl7of5Wj6snLjCx6Xmgh60Hph5pykliYshw78qKO5Yx6LAHAJaDbSfC0gMVTFJCTcel0MsdlQF+kv/dsT7a9qcBXnT+HfqjZY+pzF4Q4xlvsf3A1IehQw70cwoi3yPQPkECRIzxowy2aOW0+skBsc3higntY7w1DgC4cbtRZem65l/dflFd01GpvXnHFkIgeMZaWr4v9sj+Z77CZMrg0sKoD4jFV17sBYAgSAITQ5Dk2TLP2QuA+p4TaP2412K/yaTMZ7/CDCzgfElcIhEvJNAMiSQdEasESSBiB4PrBIsSctOx8XHTiocC9up/PG8QrAaKLngAAAAASUVORK5CYII="
},
"$:/language/Buttons/TiddlyMap/Caption": {
"title": "$:/language/Buttons/TiddlyMap/Caption",
"text": "tiddlymap"
},
"$:/language/Buttons/TiddlyMap/Hint": {
"title": "$:/language/Buttons/TiddlyMap/Hint",
"text": "Toggle TiddlyMap actions"
},
"$:/plugins/felixhayashi/tiddlymap/misc/macros": {
"title": "$:/plugins/felixhayashi/tiddlymap/misc/macros",
"text": "\\define concat(str) $str$\n\n\\define input-text(field, index, default, readonly, class, focus)\n <$reveal type=\"match\" text=\"\" default=\"$readonly$\">\n <$edit-text\n tiddler=<<output>>\n field=\"$field$\"\n index=\"$index$\"\n type=\"text\"\n tag=\"input\"\n default=\"$default$\"\n focus=\"$focus$\"\n class=\"$class$\" />\n </$reveal>\n <$reveal type=\"nomatch\" text=\"\" default=\"$readonly$\">\n <input type=\"text\" value=\"$default$\" readonly=\"true\" disabled=\"true\" />\n </$reveal>\n\\end\n\n\\define input-button(field, index, default, default, label:\"Proceed\")\n <div class=\"tmap-button-wrapper\">\n <$button>$label$\n <$action-setfield $tiddler=<<output>> $field=\"$field$\" index=\"$index$\" $value=\"$default$\" />\n </$button>\n </div>\n\\end\n\n\\define input-textarea(field, index, default, default, class, focus)\n <$edit-text\n tiddler=<<output>>\n field=\"$field$\"\n index=\"$index$\"\n autoHeight=\"no\"\n type=\"text\"\n tag=\"textarea\"\n default=\"$default$\"\n class=\"$class$\"\n focus=\"$focus$\" />\n\\end\n\n\\define input-checkbox(field, index, readonly, default)\n <$reveal type=\"match\" text=\"\" default=\"$readonly$\">\n <$checkbox\n tiddler=<<output>>\n field=\"$field$\"\n index=\"$index$\"\n checked=\"true\"\n unchecked=\"false\"\n default=\"$default$\" />\n </$reveal>\n <$reveal type=\"nomatch\" text=\"\" default=\"$readonly$\">\n <input type=\"checkbox\" value=\"$default$\" readonly=\"true\" disabled=\"true\" />\n </$reveal>\n\\end\n\n\\define input-multi-checkbox(selectFilter, invert:\"no\", default)\n <div class=\"tmap-no-stretch\">\n <$list\n filter=\"$selectFilter$\"\n emptyMessage=\"– This list contains no items –\">\n <$checkbox\n tiddler=<<output>>\n tag=<<tmap \"splitAndSelect\" \"|\" \"0\">>>\n <$view\n tiddler=<<tmap \"splitAndSelect\" \"|\" \"1\">>\n field=\"title\" />\n </$checkbox><br />\n </$list>\n </div>\n\\end\n\n\\define input-select(field, index, selectFilter, default, nochoice)\n <$select\n tiddler=<<output>>\n field=\"$field$\"\n index=\"$index$\"\n default=\"$default$\">\n <$set name=\"nochoice\" value=\"$nochoice$\">\n <$list filter=\"[<nochoice>regexp[.+]]\">\n <option value=\"\"><b><<nochoice>></b></option>\n </$list>\n </$set>\n <$list filter=\"$selectFilter$\">\n <option value=<<tmap \"splitAndSelect\" \"|\" \"0\">> >\n <$view tiddler=<<tmap \"splitAndSelect\" \"|\" \"1\">> field=\"title\" />\n </option>\n </$list>\n </$select>\n\\end\n\n\\define input-radio(field, index, selectFilter, default)\n <$list filter=\"$selectFilter$\">\n <$radio\n tiddler=<<output>>\n field=\"$field$\"\n index=\"$index$\"\n value=<<tmap \"splitAndSelect\" \"|\" \"0\">>>\n <<tmap \"splitAndSelect\" \"|\" \"1\">>\n </$radio><br />\n </$list>\n\\end\n\n\\define tmap-row(title, field, index, type, descr, note, label, default, readonly, reset, selectFilter, nochoice, invert, class, focus)\n <tr>\n <td class=\"tmap-title\">$title$:</td>\n <td>\n <<$type$\n field:\"$field$\"\n index:\"$index$\"\n readonly:\"$readonly$\"\n default:\"$default$\"\n label:\"$label$\"\n invert:\"$invert$\"\n selectFilter:\"$selectFilter$\"\n nochoice:\"$nochoice$\"\n focus:\"$focus$\"\n class:\"$class$\">>\n <$reveal type=\"match\" text=\"true\" default=\"$reset$\">\n <$button>reset\n <$action-setfield $tiddler=<<output>> $field=\"$field$\" $index=\"$index$\" $value=\"$default$\" />\n </$button>\n </$reveal>\n </td>\n <td>\n <span class=\"tmap-description\">$descr$</span>\n <$reveal type=\"nomatch\" text=\"\" default=\"$note$\">\n <div class=\"tmap-note\">''Note:'' $note$</div>\n </$reveal>\n </td>\n </tr>\n\\end\n\n\\define visConfiguration(inheritedList, extensionField, styleName:\"style\")\n <fieldset><legend>Visjs configurations ($styleName$)</legend>\n <div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on\n the graph. Other options are visible, yet, inactive.\n </div>\n <$tmap-config\n mode=\"manage-node-types\"\n inherited=\"$inheritedList$\"\n extension=\"$extensionField$\" />\n </fieldset>\n\\end\n"
},
"$:/plugins/felixhayashi/tiddlymap/misc/defaultViewHolder": {
"title": "$:/plugins/felixhayashi/tiddlymap/misc/defaultViewHolder",
"text": "Default"
},
"$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes/tmap:central-topic": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes/tmap:central-topic",
"description": "The style is applied to the node that you marked as central topic in a map.",
"style": "{\"font\":{\"size\":22,\"color\":\"rgba(0,0,0,1)\"},\"shape\":\"star\"}"
},
"$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes/tmap:neighbour": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes/tmap:neighbour",
"description": "Neighbours are all nodes that are not part of the original set of nodes (\"matches\") but are connected (either outgoing or incoming) to a node of the original set.",
"style": "{\"color\":\"#565656\"}"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Default/filter/edges": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Default/filter/edges"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Default/filter/nodes": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Default/filter/nodes"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Default": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Default",
"config.physics_mode": "false",
"isview": "true"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Live View/filter/edges": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Live View/filter/edges",
"filter": "[prefix[$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes]]",
"text": "\n\n"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Live View/filter/nodes": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Live View/filter/nodes",
"filter": "[field:title{$:/temp/tmap/currentTiddler}]"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Live View": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Live View",
"config.neighbourhood_scope": "1",
"config.refresh-triggers": "$:/temp/tmap/currentTiddler",
"config.physics_mode": "true",
"config.vis": "{\"physics\":{\"forceAtlas2Based\":{\"springLength\":0,\"springConstant\":0.09}}}",
"isview": "true"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Graph search/filter/nodes": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Graph search/filter/nodes",
"filter": "[!is[system]search{$:/temp/search}] [!is[system]search:tags{$:/temp/search}] [!is[system]search:text{$:/temp/search}limit[10]]"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Graph search": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Graph search",
"config.refresh-triggers": "$:/temp/search",
"config.neighbourhood_scope": "1",
"config.physics_mode": "true"
}
}
}
{
"d5d6d866-9731-420c-a30f-b100312a1e02": {
"x": 100,
"y": 100
}
}
{
"originalVersion": "0.15.4+9756",
"dataStructureState": "0.11.0",
"showWelcomeMessage": false
}
{
"tiddlers": {
"$:/plugins/felixhayashi/topstoryview/config.js": {
"title": "$:/plugins/felixhayashi/topstoryview/config.js",
"text": "/*\\\n\ntitle: $:/plugins/felixhayashi/topstoryview/config.js\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n(function(){\"use strict\";exports.config={classNames:{storyRiver:\"tc-story-river\",backDrop:\"story-backdrop\",tiddlerFrame:\"tc-tiddler-frame\",tiddlerTitle:\"tc-title\"},references:{userConfig:\"$:/config/topStoryView\",focussedTiddlerStore:\"$:/temp/focussedTiddler\",refreshTrigger:\"$:/temp/focussedTiddler/refresh\"},checkbackTime:$tw.utils.getAnimationDuration()}})();",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/topstoryview/layout": {
"text": "html .tc-story-river:after {\n content: \"\";\n display: block; }\n",
"title": "$:/plugins/felixhayashi/topstoryview/layout",
"type": "text/vnd.tiddlywiki",
"tags": [
"$:/tags/Stylesheet"
]
},
"$:/plugins/felixhayashi/topstoryview/Configuration": {
"title": "$:/plugins/felixhayashi/topstoryview/Configuration",
"text": "Please see the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information on the options.\n\nSave and reload the wiki to activate changes.\n\n<table>\n <tr>\n <th align=\"left\">Scroll offset:</th>\n <td><$edit-text tiddler=\"$:/config/topStoryView\" field=\"scroll-offset\" tag=\"input\" default=\"150px\" /></td>\n </tr>\n</table>"
},
"$:/plugins/felixhayashi/topstoryview/License": {
"title": "$:/plugins/felixhayashi/topstoryview/License",
"text": "This code is released under the BSD license. For the exact terms visit:\n\nhttps://github.com/felixhayashi/TW5-TopStoryView/blob/master/LICENSE"
},
"$:/plugins/felixhayashi/topstoryview/Readme": {
"title": "$:/plugins/felixhayashi/topstoryview/Readme",
"text": "Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information."
},
"$:/plugins/felixhayashi/topstoryview/top.js": {
"title": "$:/plugins/felixhayashi/topstoryview/top.js",
"text": "/*\\\ntitle: $:/plugins/felixhayashi/topstoryview/top.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n@preserve\n\n\\*/\n(function(){\"use strict\";var t=require(\"$:/plugins/felixhayashi/topstoryview/config.js\").config;var e=\"cubic-bezier(0.645, 0.045, 0.355, 1)\";var i=function(e){this.listWidget=e;this.pageScroller=new $tw.utils.PageScroller;this.pageScroller.scrollIntoView=this.scrollIntoView;this.pageScroller.storyRiverDomNode=document.getElementsByClassName(t.classNames.storyRiver)[0];var i=$tw.wiki.getTiddler(t.references.userConfig);var o=i?i.fields:{};$tw.hooks.addHook(\"th-opening-default-tiddlers-list\",this.hookOpenDefaultTiddlers);var r=parseInt(o[\"scroll-offset\"]);this.pageScroller.scrollOffset=isNaN(r)?71:r;this.recalculateBottomSpace()};i.prototype.refreshStart=function(t,e){};i.prototype.refreshEnd=function(t,e){};i.prototype.hookOpenDefaultTiddlers=function(t){return t};i.prototype.navigateTo=function(t){var e=this.listWidget.findListItem(0,t.title);if(e===undefined)return;var i=this.listWidget.children[e];var o=i.findFirstDomNode();if(!(o instanceof Element))return;this.pageScroller.scrollIntoView(o)};i.prototype.insert=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element))return;this.startInsertAnimation(e,function(){this.recalculateBottomSpace()}.bind(this))};i.prototype.remove=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element)){t.removeChildDomNodes();return}var i=this.getLastFrame()===e;this.startRemoveAnimation(t,e,function(){t.removeChildDomNodes();this.recalculateBottomSpace();if(i){this.pageScroller.scrollIntoView(this.getLastFrame())}}.bind(this))};i.prototype.getLastFrame=function(){var t=this.listWidget.children[this.listWidget.children.length-1];return t?t.findFirstDomNode():null};i.prototype.recalculateBottomSpace=function(){var t=this.pageScroller.storyRiverDomNode;if(this.getLastFrame()){var e=this.getLastFrame().getBoundingClientRect();var i=window.innerHeight;if(e.height<i){t.style[\"paddingBottom\"]=i-e.height+\"px\";return}}t.style[\"paddingBottom\"]=\"\"};i.prototype.scrollIntoView=function(t){if(this.preventNextScrollAttempt){this.preventNextScrollAttempt=false}if(!t)return;var e=$tw.utils.getAnimationDuration();this.cancelScroll();this.startTime=Date.now();var i=$tw.utils.getScrollPosition();var o=t.getBoundingClientRect(),r={left:o.left+i.x,top:o.top+i.y,width:o.width,height:o.height};var n=function(t,e,i,o){if(t<=i){return t}else if(e<o&&i<t+e-o){return t+e-o}else if(i<t){return t}else{return i}},s=n(r.left,r.width,i.x,window.innerWidth),a=r.top-this.scrollOffset;if(s!==i.x||a!==i.y){var l=this,c;c=function(){var t;if(e<=0){t=1}else{t=(Date.now()-l.startTime)/e}if(t>=1){l.cancelScroll();t=1}t=$tw.utils.slowInSlowOut(t);window.scrollTo(i.x+(s-i.x)*t,i.y+(a-i.y)*t);if(t<1){l.idRequestFrame=l.requestAnimationFrame.call(window,c)}};c()}};i.prototype.startInsertAnimation=function(t,i){var o=$tw.utils.getAnimationDuration();var r=window.getComputedStyle(t),n=parseInt(r.marginBottom,10),s=parseInt(r.marginTop,10),a=t.offsetHeight+s;setTimeout(function(){$tw.utils.setStyle(t,[{transition:\"none\"},{marginBottom:\"\"}]);i()},o);$tw.utils.setStyle(t,[{transition:\"none\"},{marginBottom:-a+\"px\"},{opacity:\"0.0\"}]);$tw.utils.forceLayout(t);$tw.utils.setStyle(t,[{transition:\"opacity \"+o+\"ms \"+e+\", \"+\"margin-bottom \"+o+\"ms \"+e},{marginBottom:n+\"px\"},{opacity:\"1.0\"}])};i.prototype.startRemoveAnimation=function(t,i,o){var r=$tw.utils.getAnimationDuration();var n=i.offsetWidth,s=window.getComputedStyle(i),a=parseInt(s.marginBottom,10),l=parseInt(s.marginTop,10),c=i.offsetHeight+l;setTimeout(o,r);$tw.utils.setStyle(i,[{transition:\"none\"},{transform:\"translateX(0px)\"},{marginBottom:a+\"px\"},{opacity:\"1.0\"}]);$tw.utils.forceLayout(i);$tw.utils.setStyle(i,[{transition:$tw.utils.roundTripPropertyName(\"transform\")+\" \"+r+\"ms \"+e+\", \"+\"opacity \"+r+\"ms \"+e+\", \"+\"margin-bottom \"+r+\"ms \"+e},{transform:\"translateX(-\"+n+\"px)\"},{marginBottom:-c+\"px\"},{opacity:\"0.0\"}])};exports.top=i})();",
"type": "application/javascript",
"module-type": "storyview"
}
}
}
{
"tiddlers": {
"$:/plugins/felixhayashi/vis/img/network/acceptDeleteIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/acceptDeleteIcon.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNVQxNjo0NTowOCswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDVUMTY6NDU6MDgrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjBmYzFjNjhhLTcwZTYtMGY0Ni05ZDk4LWFhNDVjNjYxYThjODwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpiYzZmYmUxNi1mOTBkLWI1NDQtODUzOC05MjFkNjBiZjU0ZWI8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDVUMTY6NDU6MDgrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjBmYzFjNjhhLTcwZTYtMGY0Ni05ZDk4LWFhNDVjNjYxYThjODwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNVQxNjo0NTowOCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOmJjNmZiZTE2LWY5MGQtYjU0NC04NTM4LTkyMWQ2MGJmNTRlYjwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz450LuoAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAATUSURBVHjajJZtTJVlGMd/13U/z+F4sBQOCiovZiMt8YiKZrMtypdh09StbLOtzA1RUmuTkppzIilJOB0Oa21tbaV+6UP5Mlnm5heVkfhyQJ1ONITAkAMqcTDonNOHA6g9qF3b/eF5/vf18r/u676uWwoLC3G73QCoKiICgIhQeGejVw3LMOTIP0xGdRQAFi1E9DyGSkLsKxtWEmAQuXfvHrJlyxZiYmIQkQHjeac/jjfKBsJ8YlnRzQKIgBoIh8ByaRSICAilRCjdk1UeAIhEIogIPT09SFFRER6PZ4DByqr1+WpRoYAquKYuqCPz9SZeeCVA4vggAC2XPVw54eXi0WTOH8yIslIIs+bryTsq+hl0d3cjxcXFuN1uVJVVp9dvEigSwP3iYj9vfV7L6IldPE5uXvZwcKuPsz/7+qLc/I1vexFAMBjEzJ49G9u2WV1TsEaVUhOBmJxVVeR9X8NTI3t5kgxN6GXakia67/bSeC4ZkexprccCZxLnVodCIRRgdU1BgsBuBVzz8qt49yv/oMb2f5TJd7kzBsXeLPHzal4VaiAmZnfupY0JIoKqKqoUGAHX9MV+llf4HxmtMaDyaDZLtvqZushPWEHsAlVFP/3rswSNsEEt4O0v/E9MCebx8PxCP5YNlr3hg7+/TFBEl6mClflGHUl9VdIvGycuJdDgvm/bAtu6j3c0uSmZufQhnRHPBsnIqcOyQGSZAjlEgCkLGh3RDHk6yJWTCQCUZi+gav8Mzh3KpGzeQgCuV3sZEhd06D2f3QgCas9XIuozCjw3q92xMXF8O8218QDM/fAMGLAsmLO2Jnof6rwkpjv10rLaURtEJimWJomtMDLdGUlyRhuBei8AU5Y0M2ZCMyPSW8hc2AxAW4OXUeOdbcKbFsQ2YKwkizCg1uAH9kxWOzU/+ga+X8s/Q/iBKur4w8tL79c69ESiTFXFQvQmyhhu1XsYNeHhW5s2o4OuwDB6ug2uISF8fZED9HQbgh1PM3Zah8PB7UYPGBBalDB+MFB/Kt6x0e0JMSzpDr9XxzmwprNxDB95F9eQkANrrI3HssFQq4hWAnDxaMqgaUoYF6DJ73X8b74Qz/C0Qds016tSUANqVypG92EMnD+SwZ9XPc5KSg/QWu900HotgRHjnA5uN3m4diojmiKzV3cNL25DdTvGwJESn0NhzMR2Ohqc6etoiidpgrNET3zrix6yKf3Bld8WLZ8IZcAG6ip9/LQpyOIt91vG2BltHCwezbbpKzEKYoFodKVO+fUh48f3+Lh20oexIBQqExFk586dxMbGkntp41rELscozFpRxaLN/6Mv/cf4hcMzCYdAzboDKXm7Ozs7MTk5ObhcLs4lzqmeeus4GCublgvJtF61Sc1qxR0beqzh7g4Xx3ZN5/KxaagCsvlASl4pQG9vb5TB0KFDibZtZfmlonxcVgVhAcuGjJxa0l9uImVKO3GpXahA4EYsjbXx3PgtmYbTk1CiKYM1h1LzKvrncmdnJ1JeXo7b7cYYQ9+A4L2r21IJR9ZhXOuxXGAZBvKv/Uui8wELVHYgUn44bdWNfmKRSIRgMIiUlJQQGxs78Krof7oYY8jt2TUCy3oH0XmI+MAejW0gYpoxxg/mF4zu3a8rbvXrPuigq6uLfwcA6IKAIsDf9kIAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/network/addNodeIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/addNodeIcon.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0YjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo2OWVmYWE1NS01ZTI5LTIzNGUtYTUzMy0xNDkxYjM1NDNmYmE8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0Yjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjY5ZWZhYTU1LTVlMjktMjM0ZS1hNTMzLTE0OTFiMzU0M2ZiYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5WKqp9AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYXSURBVHjafFZtUFTXGX7e9z27sveuMCwYV8ElrA7YSFYHtJUPkaaI0aRqG8wP00zUzljDINNSA/2ROtpO24SxnahlxjYd7SSjmUkymcxYlDhQPzHGisEVp8HwYWCVVVgEsrsuLnL74+5uqTF9Z+7cO/d8PO95zvO851BlZSV0XQcAMDOYGQBARDhX3JRmMDYZwLPMWAzGHACYIgwS46oBNBNwtOL8CwE8EkSEUCgE2rJlC2w2G4go8Zwo/bMDgnoG6gxLfAAAYvPDMCCszKTAMIAGAhrWnf15AAAMwwARIRKJgDZv3gy73Q4iAjPjxIr9VVOMRhbAYKB8zvrO0llrfEsdKwLZek6YAPSFvtSu3GtLawu0ZJ6625SHGBQB1T88t6MxvopgMAjaunUrdF0HM+P4yv27DMYeJmB1RqW3Jnf3tQX2p0L4P9EXuqEd7PmDp+XuMU9sRbvXnnt1TxxACgoKYLVacbzsQDUJGkSATe6qi28uPtzusM6Kxie6NHLGUX3lxVUNX9StPHnn4wy3njuUYcu6n2pNi66avcEXnByP/nv8aiaIyrqz2gO5A9+9FI1GIfn5+WhZdTAdjFMkwMvZOy7uWnTAOz3L4Yk71m3t69fdfTDoUGTBeHTUfiHQ6lo7Z2OXJvpDAChKe+aOCdKRKWxZ2+1qb3yyd3GYmRkQ7GQBVs99wfv6on3eR2k4PdTkDEbH7IuS8/svld/561PJS/pDk1/bzwx94pze7xc5v/H+YPY6r5BAkdrJzODTK46lE6PeYEJt7u+8j+OZwCBiEAgAoNgKJoEQf6PvNvdrXgtZoNhSf7q0KZ3B2AQmVMze0Jmt54S/DcDCVig2NcvEUGxJAE4Pl+YOr0iv6BRSIPAmBeBZAmHlE2sH4p1uhrq1s0MnnEQMBsf8wRASAICQQCCITN1X7/sOuc0kgOVp3/fPs2WHv+coG7gQOJUnLGsUCTxEjPzUohEA+NfIWUdtx0+efzA1kSSkIGyBAQNCKgHAEBAJ3u79U7kiAcWoem/gb5Fd33nrH3kp+SMWtuAB+GllMJxMjCx9QRgA3uiqL5kwHiTlpxb3smlfMDGYGPP1hcMAkJvs8ScpfdJspdj+MK6Pf+5+u29vyb4lR4+BGEziVESAkEpw6Av1OhUpHCz4qOXbzFWz4Ncdj/v/o08Lt92ODDgZDCEFJYoUGH4mzugP92puPTf0pD3H7wvfdFZdqSxnMtWjoGAAmG9fOLxjwesdjT2/XzIQ7ks3sycYMSEwGHNtWf5bkX5NkYCJBxUBXiGV0XHvosOt54Zey33j/K+8P33++vjnbiGJbbLE+J9SANAb6nJ2B79wcUwETAwQQ7fMjPzMvfP8ja87HUIKMOiaAqMZhrGmLdAy78eZrwwsTS0eObTs+IdtgVanxBUExqGbb5VzrIISGIoUXsmqbgEhJldCQWqRf27SvPAn/o8XmgLhZsUkR4ll37mhk3n94Z4OlzY/7NLcYZfm7o1z2zT4vsvUNSXqprBCkmiTFbPX90/fh8GIT2sf+zTPdDMf4dVnNg4z+E0ixsGeBs9jd5ViSgLHjCb/peaR+MD3d4/ZJg2llyuG2Vwy7QWAs8PNnn1f7vkGSGxAzE6mk+kxkx/p/4unffSCR0hAoL1EBCYiPNdWNcwkNQTCR7feWX6g+7f/A7I8rcw/U6UEe0Ndrhc/W7mtL9ztmqlSgstSS/zTJ28dalpOpkRryrwbhwBACgsLMWPGDOT4ll3qyeqAkJTdCF7P/CrUY/GkLL1rE+2hTbSH8+0Lb/WEuhzhyaA905blf9Vd/895WnZwLHrPevir/cvOB1oLYpTtLrm6oYGIMDExAaqtrUVKSgqYGSKCk0WHq5ikkWEWtNL0imv5qUW+RclLRjJsrhBAuH1/QL8R7HR4xy5nescuP23E6hOA6mLv+sb4uTw6Ogqqq6uDpmkQkcStorX4XRcM1FjZ+kvFFjCJKU1WpkNJJUqIMtX1RyLeX3JtQ0JRhmGYZ/L27duRnJycuFGISOJ9pqh5lrB6iYgqGOxRrOaa54DcZmKvkJxk8JHC9rKh+KVhOsD4+Dj+MwADIf8n5m4xGwAAAABJRU5ErkJggg=="
},
"$:/plugins/felixhayashi/vis/img/network/backIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/backIcon.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpmOWQ3OGY4ZC1lNzY0LTc1NDgtODZiNy1iNmQ1OGMzZDg2OTc8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOmY5ZDc4ZjhkLWU3NjQtNzU0OC04NmI3LWI2ZDU4YzNkODY5Nzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4jq1U/AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAVTSURBVHjanFVfTFNnFP+d77ve8qeVFbBrpcVgRrCRFikFByLxwSAaE32oRCHD6JMxxhhn8G2RxxH3MsOTbyYsmCAxPMmMMYtkIUYmK60OO0qAK23BFlNob0uh3x7WS5jLZPpLbm6+k/P9zrm5v9855PF4UFhYCABgjIExBgAgIqRSqRIi6gDQRkQ1RGTB3wgR0e8AHgH4Sa/XR/EBiAiJRAJ04cIF5Ofng4g2n0gkUkxENwF0c843LzHGQEQQQkCLExEA9ALotVgsUQAQQmgNQhJCbF5kjCEUCl0moj4t5na7fTU1NUpVVVXUYrEkASAcDhe8efOmxOfzWScmJqoBdBNR99LS0hWz2dynNSSEAF28eBGFhYVgjCEcDn9HRD1EhIMHD3o9Hs9kWVlZAh9BKBQqGB4edr58+dKZ+6JbJpOpBwBWV1fB6+rqIMsyIpHIFcZYL2MMra2tY5cuXRrfuXNnBtvAYDBk3G63oqpqZm5uzgrgSDKZjBoMhueZTAbc5XIhFouVEtFTxhiOHTs2dv78eS8+Efv374+oqpqZnZ21cs5PJJPJPlmWkyynnBuMMTQ0NHi7uro+mVyDx+Pxulwu71ZOlkqlSonoJhGhvb39s8k1nDx50ss5hyRJN9PpdKlERB2aWjSVaEilUvzBgwcORVEs5eXloXPnzk1sV8BkMiUdDofP7/dXZ7PZDilnIhw4cGBeS1pbW2P37t1zBwKBikQiUUREWFhYsHHO0d7evm0Ru90+/+rVq2rO+XGJiJxEhMrKyhgAjI6OWoeHh5tWVla+4JzDZrO9bW5unhwcHGzz+/32np4e+xaDbfoHAMxmc6ijo2O0oqIiJkkSNjY2HBIRmRljMJvNyWfPnln7+/tPMMZQXl6+0NbW9qK2tjYcj8floaEhqKpq+HCkbD3PzMwYBgYG0NXV9UuusFna2kEgELAQEQ4dOvSis7PzN41Ar9dnrl27NqCNkv/C3bt3zy4tLVmICJxzEBFJRBQmorLFxcWCqqqq0Pj4eO3Y2JhbUZTdra2tL2pra8OJRGLHnTt3zkqS9K+huHU4EhHMZnMoGo0W5OIh7nK5jjLGKq1W69vDhw8rRqMxMjc3t2t5eXnX5ORklc/nM+fl5SWnpqa+0uv1K/n5+Ws6nW5NluXNd15e3ppOp1uz2WyzZ86cGQ0Gg6ZAIFCZzWZ/lYjokRDiuN/vt7W0tMw3NTUpbrd78P79++5gMFgRiUTKHj58WMYYQ3V19etTp05tq6Lp6Wkb5xxCiEfc7XZPM8a6FxcXTfX19a/1en2Gcy5qamreNjY2/qGq6joRZe12+9Tp06e3JY/FYgWPHz8+mhvr3/CWlpbk+vp6PmOseWVlBS6XS9GSJUkSdrs93NDQ8Oe+ffvC/8fJIyMjddFo9Esi6pVleVjT2m0A8Hq9zqGhIefnjoknT544A4GAM/eDbxMReFNTE0pKSpKqqsaI6Pj8/LxVVdWM3W6PfCr5xMTE1zllXS0uLn6aSqXAGxsbodPpoNfrn6uqCs75EUVRrJFIZMfevXsXdTrdxseIE4mEPDIyUu/3++tynd8yGo29RIR0Og26fv06ioqKwBgD5xzv3r27zBjrIyJIkgSHwzFZWVmp7NmzJ1ZaWpoAgGg0WqgoSvHMzIw1GAw6tvjhitFo7NPW5fv370Hd3d0oKCgA53zTQMvLy+VCiKuSJH0rSdLmztZytIWv5RPRD0T0Y3Fx8dzWfby6ugopHo//w4mcc8iyPMc5v5FOp7/PZrOdQohWInIC2C2EgBBigYi8Qoifs9lsv06nWyIiaFxagXg8jr8GAGxuIe7LBeWhAAAAAElFTkSuQmCC"
},
"$:/plugins/felixhayashi/vis/img/network/connectIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/connectIcon.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo3ZWRhMjI0MC0yYTQxLTNlNDQtYWM2My1iNzNiYTE5OWI3Y2E8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjdlZGEyMjQwLTJhNDEtM2U0NC1hYzYzLWI3M2JhMTk5YjdjYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4ubxs+AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAUtSURBVHjajJZ/bNT1Gcdfz/P53PV6B4W7VltLqdAaplIOiMOoyxxJCSs/Gv/yB4gzJroAosmmDklwkYWR0bQsdmkykoojTpcsWYLxD/lRZdMQkTHRtkLZRqG0tIVe7662vTu43n32x/VKZ/jh89cn38/zvN7P5/l88zwf2blzJz6fDwARQUSm1n8s31CM0/VAnbNmsUPuAsDpgEO+Bg4C7//iyv5hvmMiQiqVQpqamvB6vVNwEeG1JZtCBrYi/MrkAwDNgjhwAlbzICBLA0rDb0+/839C6XQaaWxspLCw8Dp86cbNmqVFJQddE6KzdjZ9D89g+B6fSyCOcyn1nxil+O9xKg5HqWFSHGXLjrP7W/ICqVQK2bNnDz6fDxFh65KNvxbHDhF4rJj2bXPo+IGfcW5h5xL4f99P+FCEMIAob75x9t0dAMlkElNXV4e1lteXbNqiQoMaeOFOjrdU868SD2luYyEP6dUh+sYmSHeOU6GO5Z8VLx5+NNZxIpPJ5AS2L3upROCoCvz8Lo7vnkf77cAHhpiz/zIL9vWz8L8p/NvupmM0Q7pjnAoLqz8tDrc8MnQqYVUVhVdF4LEg7b+rvDn8wDDlH0WoPpukLJImSBaMwjcJqmwWts2jPZLG/8kwYVFeVdXXZcFf4yVDc2cNKfBFmD9X+0ncCP58F48eG+Feo2CAUkvs4dl0V/uJvdXLiiV+ut++n7YLSfxPfMMG54ChzB3WIesVWB2i82bw1AR6fJR7C4VsfYiv6u/k3A9nEgP4zXke8DiYHyAOMK+QxPIgnZ9GqSHr1itQJ8DK2fTerDQ+S/bHRXQJaHSCwNIZ2Xh+7+S3VAmwNMBA/tuPZtErgKquUmdMWIFlRURvdamRNEXGwIWrlP47pTMzLiunxghGMwTLvcTWlHAp77s4QNSrYMQtss6ZMgWqCm5cHoDHO1nbk6K8zEN8+3zatv2Hn1b59EqJZdxmYUERg9P9KwpIiAOTdWUWBXuLzB/vZG3P1Un4PNp2d1MbmyD45TWCxuCsQm0x56bHGHFYEZwxok7toAA9Sfw3hCcoL/NOwi9QO5wmWO1j4JEgZxTkodmcWRGkf3pcX0r8xoAaBixKu4U5/xwndM+0tpAvS6mP+PZK2nb1UBvPEKwKMLDvPj4ESGc55lGy303sdJKQdZB2rkMdctAB/4gzN+/Q2ENNd4LyUi/xN+bTtquX2thk5nk4wI3gAF+OMNcA1nFQDfK+BY5GqbkwWabTY5QZhXWlnNx1ntrY1Rz87fuvw29m/Sn8J+PUGAFj5T19baA1IspuBZp7cx1x4SwG1cEf+lgRSROs8jGwb+Ht4QB/GSSsAhYano39LWIBxNEIbP14hPDuiyS2VtJuHXQlKKvxM/jiXDq/D/xPlwifGMkJZB2NIoKpr69nxeiZxLHicFSFVWfGqBidIP3LSjrWltD94CyufF/4kQgPuVz2Lz93+dDRa9eu5QQ8Hg8/iXee+Dy4CKMs7xqn4nwKz9IirhQqmVuB42m8ey+x7LMoD6iAON782eChhqmRuXfvXgKBAKqKqtI0/8nNKrQI4BVYXkzHgzPpC88gWuHL/caXrhLoGiN0apSKr0ZZRBZM7q2w5ZnLR1oAnHOMjY0hra2tFBQUYIyZmstvVT1Z6eDlAuEVq7merxmwueNPDXy9PvybjKP5mctHLk4/XTKZRJqbm/H7/VNw1VyEMYbW4FN3WNWnnchKoy5sHeVGBRX6VWi3ymFx7r11Ix8MTX/y5C2RSPC/AQB61erowbpqSwAAAABJRU5ErkJggg=="
},
"$:/plugins/felixhayashi/vis/img/network/cross.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/cross.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAADvGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0wMi0xNFQxMjowNToxNyswMTowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5ODJjNjBiMC1lM2YzLTA5NDAtODI1NC0xYmU5YjVhNGUxODM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjIxODYxNmM2LTM1MWMtNDI0OS04YWFkLWJkZDQ2ZTczNWE0NDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0xNFQxMTo1NTozNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NzwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+cZUZMwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA2ElEQVR42gDLADT/AS0tLUQFBQUVFxcXtPHx8fPl5eUNCAgITCkpKesEHx8fGgYGBjH+/v4a+Pj4qgQEBFU6OjodMTExzwQUFBSvEBAQEfX19SD19fVqNDQ0CElJSd/9/f2vAwEBAfrn5+fkBwcHLRYWFgsXFxfz29vbo9LS0uwDDQ0NDfPz81orKysXIyMj+ODg4Avh4eEa/f391gMkJCRYPz8/KUhISOMCAgKh8fHxHRsbGx4UFBQQBDk5OeY7Ozv7CAgItPb29vMEBASaJSUlTQ0NDesDAEwpT0Ko8Ri2AAAAAElFTkSuQmCC"
},
"$:/plugins/felixhayashi/vis/img/network/cross2.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/cross2.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAADoRaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTQtMDItMTRUMTE6NTY6MTUrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTAyLTE0VDExOjU2OjE1KzAxOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0wMi0xNFQxMTo1NjoxNSswMTowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6OWIwNjRhODctYWNlZi1jMjQ5LTg5MWUtNDAxOTVmMWJjMTNkPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjlmYTI2M2QyLTljOWMtNWY0OC1iYjNiLThmYmQ5NmI5ZTBhMjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjlmYTI2M2QyLTljOWMtNWY0OC1iYjNiLThmYmQ5NmI5ZTBhMjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5ZmEyNjNkMi05YzljLTVmNDgtYmIzYi04ZmJkOTZiOWUwYTI8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMTRUMTE6NTY6MTUrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjliMDY0YTg3LWFjZWYtYzI0OS04OTFlLTQwMTk1ZjFiYzEzZDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0xNFQxMTo1NjoxNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGU+c1JHQiBJRUM2MTk2Ni0yLjE8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj41PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjU8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PvQ0yV0AAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAHZJREFUeNoAaQCW/wE1NTWrERER3+3t7Xbp6emKOTk5IgQtLS3kBAQEdfLy8ipOTk5LQ0NDkAE0NDQAEhISxiEhITkTExPH9PT0OgMGBgaPMzMzVS8vL7XU1NRC7+/vEQNfX19lUFBQtfPz82EEBAQMNTU1HwMAMI4nIAoe9RQAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/network/deleteIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/deleteIcon.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDowNmE3NWYwMy04MDdhLWUzNGYtYjk1Zi1jZGU2MjM0Mzg4OGY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjA2YTc1ZjAzLTgwN2EtZTM0Zi1iOTVmLWNkZTYyMzQzODg4Zjwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4aYJzYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYGSURBVHjalJZ7UJTnFcZ/73m/72PdJY1RbhoQp6lkXRAvmIYxdCUadLVOozPNtGObap1JsKipjiShbdoRbeKEiQHpQK3xj0xa03aamTbaTGyAYV1QGeqFi+JyiZFLAlmESBkWRmS3fyzslGkmnZ5/v/M873Oe75zzvqqoqAibzQaAiKCUAkApRdHIK/NFsx2NR91nOSILADDoJyzNaM4xxbtvPHh0iC+JiYkJ1OHDh4mJiUEpFSXPv/ziPC28TIiXDCOSrAClQDSEpsCwJPIhrEBRQpiSytXlQwDhcBilFPfu3UMVFxdjt9ujFTzfcLBADCoEEAFr1ZbrrNjch2vtEImPBgHob7fTcWE+bVXJNJ/NiFQlEGLvieXHKmYqGB8fRx05cgSbzYaIsPvywV8pKFaA7fGtLTzz61YWpo/xVTHQbufsq5lcez9zWuWhk5mvFwMEg0H0+vXrMU2Tn1wp3CtCiQ5DjGd3A/m/v8IDCZP8r4iNmyRrWx/j/5qktykZpXKzAjVDVxPzGqemptDr1q1jX3NRnIJarcDKK2hgR2ULXRfncv7UYv7xpovhnhiW5Mz+kefeSKO6LJ1A1xzEuk/Ojm4mRibpuZaMZW3OCtRUND60NmiICCIUShisx7a2sLMiQn4s77uEQgIabnqdfHIlgT1/qQeg8vs5dHhdCNB1wYn3RIiC995j26stjAbsNH+YiZJCESnS1Y/XxIXu8r4YIPv/VkVs3CTnTy2ms34xro1+sp9po6sxlTu34ultmsPVvy6is86FCHgO+DDs49zpjufBpCG+seYOC9OHaTidieicb9ouVAhKtouAseI710ma7pLuqwmgYfHqAFt+6WdLoQ/LBl11Lm7VudAa8vb72PCin9TlAWIsGGhLACD+kSAZnusYBii1XQAPYWDllt6ov2lrBkDBR2+6Ofuak2//3M+G/T4wAAPW7fPhKfRTVeqk9qQbFKRmDUTxS3N7QYGYmwzCkqklBGlPDEcTNv+sg9tNCbTXuvBWujE0bHrZj9JE1B/wU1Pm5PwJN6YBS9a2kVvQEcWnrh5GTFD3lxkYkqRMgYQlwVldUvDnen73LHTUuqitdKM0eAr9AFQfd1J/yo2aJn+2sn4Wdn5qEFODJskgBIjx5T0uCrQA08pnIjS9PERDjPnfOKXAMEBECUoGEIHBj+2zkt76UQ6dXheGAev3+cg74Kf6uJPqcicbfuond7cPy4SOiy7+tD9nFvZurx00KOk3CNEC+mE+vjSPBc7IWqgqTaPT60IMcO/xsXGa3HfKjRgRdbl7/KDg0jtubje6aHj7c7J3dgLQ2zoPwwQ91SooOQdAW1VKVMHty0kA5Bb48BycJn/LjWFGbLv4thvvb53kFvjJ+XEdWkPfjQVR/CcNKYgGMc8JWt5Fa2j+MIPPuyI2pa4IoHSkt6vLIuRaQ9q32khzt4GCxtNu6k46GeiIR2lIfDQQsafPzq1LGRGL9Gk9d+vrwewvfHPQOoexQVjxdB/auk/zmaUMdsfz6bVUtIalT7bxveP1ZHh6GPDPYeSzeD69kcpIfxymFWLNrka+ljhBTWkWwz2JiJT84YHnz2iPx0P20PkmRF5i6HYiwZFJsn/YzdezbzE3cQibY5xV266z6RfXohakb+xB9CjanCD9qTbW7Grk4WV38VZm0l6dhQiEw9taHSuDqrS0FIfDwXM3X9mHMsvRAk/sauDpQy38P+GtzOTGB9mEpkD0C2dS8n8zOjqK9ng8WJZFU+JTjasGvaCNXPpvJBPoMlm0OoDNMfWVxONfWNSUPUZ7TUQ56tCZlPwSgMnJSVRpaSmxsbFE1raw82ZxAZZRQUiBYUKGp5UlOX2krBzmoUVjiIKhHge9rfPo+Wcy3ZeXIYASgL1/X5RfMXMvj46OosrLy7HZbGitUUohIuzoem0RofALaOsghgWGjky0MiJTL8b0lOvI8hN1DKXKP0jd3TNTWDgcJhgMoo4ePYrD4Yi+KmaeLlprnrtXFo9h/AAlG1AqE8yFmBrC+jO0bgH9EVpO/1F2Dc5g//OAsbEx/j0Af+USsQynL1UAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/network/downArrow.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/downArrow.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffARwOJDdL2KxuAAAGRklEQVRIx52XXWwTVxaAzznXDn9xLUcFjyOShowhEzuwSSQXMN38gEJEoOwDaxkCCMr2FaXhJ0/sWmmfCkULSAgUtdknHpBWEYi2oGhlmc2fWrwJCDL+wYF4XEicZBMbgrFDY/eh4wjMmJjel5m595z73XPuPeeeQcihORwO9Hg8f2aM7UylUluIyAgAOgAARJxBxAAA9APA9zzP97S3t6cWmxPfNVhXV0d6vf4LRDyLiID4u7jSk4heVz0eDAbPuVyu5HuD7Xb7ZwDQSUSAiFBYWDhmMpkks9kcLikpiWq12gQAQDQaXTI6Oqr1+Xx6r9dbPDY2ZiAiSCaTgIhHOjs7/5UzeO/evV8CwN8RETZs2ODbvn27WF1dPZnLtty7d2+l0+k0iaJYJnvpq46Ojn9kyjEF6DkAaENEaGho+Ono0aM/GQyGGOTYOI6Lbd68OfjixYtfg8HgakSstVgsOrfbfSurxXa7/WsiagMAaG5u/s+uXbseZU7s8XgKrly58sn4+DiHiMBx3Pj+/ft7BUGYzpTt7u7mr127tk3+PHPp0qW2tyy22+2fIeJpIoJDhw51NzU1PVay6MKFCw3hcJgjImCMQSwWyw8GgwV1dXW+TFme52dWrFjxf1EUecbYFovFIt25c+cuAAABANhsNkZEnUQEO3bs6G9sbBzN5sqJiQmOiKCjo6Pj8uXLHYgIExMT3DsiY3Tr1q398kI7bTYbWwAzxloQEdavX+87cODAg3fGX0boMMYyQ+mttmfPngcmk8mLiGAwGFoAAMjhcCARnQUAaGxsFBcN/D8ABgCoqakRGWOgUqnOOhwOJL/fXwMAUFRUNFZVVbVoyCiBcgGXl5dPGQyGMSKCZ8+e1RAiNiEilJeXS7mES6bFKpUqJ7B82CQiArVa3USIaJXB4VyUiegNUDqz5dJKS0vD8sI3qxBxLSJCSUlJNJuC3+8v8Hg8XDwez8sEp3N4V1dX5bJly+bWrl07bjQap5XmKSoqisq661SIqCMiSOdeJejFixf/+rq1Snvsdrs/BgDo7e2FI0eO/Jvn+bfgGo0mIevqVIu5yuPxcAAAFRUV4tKlS+dev6UAAKqqqu6m++bm5vL8fr9pZGSEUwK/fhBVqVRqhoj00Wh0yapVq15mCs7PzzP5QMwfPHjw58zxffv2LfRdvXp1EyLCq1evVErQ58+fL5HBM0RED4kIJEnSKgmXlZWNExGIomgOBAIF2Tzz6NGjAq/XW0FEwPP8uJLM06dPtbJ3/EREA4gIDx8+1CsJm83mSUEQvMlkkq5fv27NBr5165YVAGjdunVeQRAmlGRCoZBeBg8QIv4AAODz+YqzTXr48OFenU4XmZycLOzp6SnNHO/r6yudmpoq1Gq1EZvN1pttHkmSihljAAA/0urVq/+LiBAOhw3379//UElBrVYnKysrRSICl8u1KR6PL+xhIpFQDQwMbEJEMJvNolqtVix3AoHAh9PT0wYigpqamh5qb29PIeJxAACXy2XKttqdO3c+4Djul0QikX/jxo2qdP/NmzcrY7FYPsdxvzQ0NGS9YAYHB01yBB2vr69P/n7EZmbOy+4Wurq6KrIp19bWDhERDA8PbwiFQtonT55oh4eH/8QYA6vVejebntPprHj8+LEAABCPx88vFAKiKKYsFksIEf8iSVKRRqOZKi4ujiqUNbOSJOVHIpGV4XD4g0AgUDQ7O6srLS31bdu2TdHaoaGhj/r6+urlMPr81KlT/3ujAnG73UMbN25cgYhbvF6vMRvcaDSODQ0NGSORyMpYLKZdvnz5bHNzc3deXt68EtTpdDbKJ/lMW1vb6axVZktLyzlEbCEiqK2t7d+9e/dblszOzuZ5vV4OAEAQhPH8/Py5TJnbt29XuN1uq1zqnj9x4sQXi5a3ra2tpxljJxERBEHwWa1WURCEnMrbkZGRlYODgyZJkspk9545duxYW84F/cmTJ/8GAN+mLwW9Xj/G83xwzZo1YYPB8Eyj0STSaXBycvKDYDCoD4VCH0UiEUM6dyPi562trd+99y+Mw+Ggly9ftjLGvlGpVAsVCCKCnAjeuK3S74h4orq6+p/19fXv/wuTuYBkMvkJIn6KiFYi4olIJ4NmEHGEiPoB4IbFYul9FzDdfgOenj3/W2qSyQAAAABJRU5ErkJggg=="
},
"$:/plugins/felixhayashi/vis/img/network/editIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/editIcon.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDozOWNhNzE5ZC03YzNlLTUyNGEtYmY1NS03NGVmMmM1MzE0YTc8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjM5Y2E3MTlkLTdjM2UtNTI0YS1iZjU1LTc0ZWYyYzUzMTRhNzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4ykninAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYpSURBVHjafFZtTFvnFX7Oea+NudiY2Hwam4CBlgQwXdKREDKUoYg0jbRJ29RJ2VZ1mjRFUxSpA3VTfkzJfkQbS7spU6rtx5Z2UtppScjaHxvLuiatWi2jLEoMIUDCh23g2gbj7+tPuPvhOurawPl1dc99n+c55z33fV46ceIEZFkGADAziAgAQERoe/9ZK4GPM/AcgbsIXAcABCgMvkfAqAa89eDoJyF8LogIqqqChoaGYDAYHr8kItS8uc8iIH6iAa9IkAo5EAQX8pqmgUVBCBggYFgDhv0/GAsBgKZpICJkMhnQ4OAgZFkGEYGZUXmp+0cS+CKBwWA0DVRPOg5Zl2q6zaHyJlnVAMQXVTkwHrUqH0Xsvn+tdQAAMQDgpPLS2MViFY8rkGUZzIzaS/t/xqCzGggtz9e697zsnKhoLUtim4jOq/LE6x7X0nsh16dEZ5a/O3a2SCAOHjwInU6Hujd6ThJ4mCDQ+b2G232v7v6vwarPbQn8MGlMr+X0kpE3Wr5Zt5hL5HPhqYSdQIfKJ+yhxDPKWC6Xg+jt7UXD5b5KBt1kCHS85Ljd8/On3NupfnhFaZj4rWff1B98B1R/hnUmKd36bdtCNl4g0en4edNE/cXwLq8qMTMIPAQwmo/WuHvObA8+9c58k/dKtD0TyZWXN5YGA7ej7epKxspM//7SoNOdWc/Jyq2wiwhDzPxT8cP0jys3VMM7OmL0/77zn4Ydui3b8uiK0jD7RrA77c9Wd57cefPpF+2T6bWsFPWkaiPTCWvTsZpHFU+XrS+8G3AR08F6X+1FJvBxQQzHQOWk2SmrW4FPX/U2LVwPuDZj+fJKl2khPpeyAqA9rzR/YqwuiWXX8taN/CabGkrVuq9YJlkQQDjOAJ5jAhz9Vt9W4N5/rNp8I+vtMV/aZm4zLnUNNt0urdYnF68HWoJj4Wo1mLGUNRr8LEgDgNqeCh8xQIKOsgC7iAjVe83rT9zQa8uNM28u70kspessu8q8zq/V3NcZpVzb9+0zmVhOvvvrhaMVzrJg0zeq7xMVCCwdpnWSGBqjUyJwLTFgbvxie3w31uoWR1Y74r60rdxZqrR8q85t2W2MGCp12bm/KC3hyaSTiMhxuGrKcahqpbjOaDOoEhOEoFqJQCCJvqA85I6bfTdDjQlf2lbxVNlS6wt19yy7jRHZZlDnrinNj/6sHMhnNw2Ogco7O79e5fm/xQywRBBCEAuwn4gQ96bkYj4Vyuq9N1Z3Bj4Od5bs0MXt/dZZ21ctiqFan174q985P+Lfp+U1g7XDON/1ctP458WlVjLyJhOISZE0wM0S1QfuRC3lTjkJAKKEtNC9eIOhSh9xHLZOJRZTFuXDsEoStLkR/768ummsaJG9Pb9oe+9J+xaeSVokiQDSJphAo5uaBuWjiKP4QTqS1cUWU7ayesN66wu22frD1vmVW6GW6T8u9eVjGyZzs+w78Nqu0a2mbvVu1KEJQAgeZRL0liQYyx+GOmKeQpu0rMYsAJPNEFGD2dLodLIy6c9Ys7G8yeSUl3tf2/X3rcBVJSOv34l3sCBogi7z1LH/rBHjl4IJ93/ncQFAnjeImJD0Z8zuCwu9q3djDXqTlAKID5xv+9t2R8n8VcUFBljQ8Gyfe40BYBM4DwDLt8Kue79ZcFkbzfEdbUbv+oN4c9KTtsfm1MbYQqqh+2zrVZYKs/7Ef+byimt1POYiJhDhPBFBIiIEXhxfs7/dfYoIF+auBfYTE/pebx/V8hqBP2ODvD34yvuh/WCAmU75Bx6sIgaI/v5+6PV6JLqUsYr7dpDAoehs0h73pHTWrvKgThYbRSt9UmSjef3MpaUvBz4O72UmADgTOPJguGiZor+/HyUlJWBmJFz+D8xTtlUiOpbwpmrmrweeSXrT+g11k4SBN3RGKUcAVCVdFhyP1nreDbY//NPyEXUlU/Pp4XYycGT6V0Ux2WwWdO7cOZSWlkII8diX7SPPNgDaKdbxoNAxwATBAEkEEgSWCEQAqPAMwqvMdCEwMO0tVqZpWsGTT58+DaPR+PhGIYQAAAgh0P7B3ioW/B0iGiCGiwXbCuOHFSJys6AbYFye2T+xWhT3WYJEIoH/DQBMw3kes8OJPgAAAABJRU5ErkJggg=="
},
"$:/plugins/felixhayashi/vis/img/network/leftArrow.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/leftArrow.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffARwOIyX3IEvhAAAGn0lEQVRIx62XX1BT+RXHzzn3FgYhIjuBcC2BwCVIYGEIcIGopTiiO7I6OLE2jujYbXf6os5WAV9KyWj74m7/bH3TsfTBFx+Y6dhWZ6eLDNkV1oRsoqI3CX9mTTIC2dD8U0ICNLcPTRx0+efW83LvzO/8zud3z+/3+55zETZhRqMRHQ7HjxiGeV+SpF1EVAoAOQAAiBhExEkAGAGAf/I8/+XFixeljWLieoMtLS2kUCh+hYh/QERA/J/7ak8iWjm10+12fzo0NJR4Y7DBYPgAAPqICBARtm/fPlNRUeGprKz0qVSqcHZ2dhwAIBwOpz99+jTb5XIpnE5n4czMDEdEkEgkABF/3tfX99dNg48dO3YJAH6DiFBdXe3av3+/WFtb69/Mtjx8+DB3cHCwQhTFHcks/fbatWu9r/sxq0A/BYALiAj79u0znz171sxxXBQ2afn5+VGdTueen59fdrvdBYj4Y0EQcqxW62drgg0Gw2Ui6kREOH78+IDBYHDC97Sqqipfenp6yOVylSBikyAImVar9fPvgA0GwweI+DERwalTp/7V1tb2DfyfxvN8MDMz89+iKPIMw+wSBMEzOjr64CX46NGjDMMwXxMRHDhwYESv14/DWzKVShWKxWJxj8ejJKL2wsLC34miKLEAAAzDfISIUFVV5Tpx4sTjjYKNjY3lOhyO/LS0tP9UVFTMlpWVBdbzP3LkyOO5ubl3HA5HOcdxHwHAH9FoNOLExEQCAKCrq+tvWq12zdO7tLREV69e3e1wOMpT95aI4MyZM/1qtXpduMPhkF+/fl0PACCTyYgdHx9vRkRQKpUz60H7+/srbTZbZSQS2caybKK6uvrJ8vIyI4pihdPpzN8IrNFo5jiOm/H5fFwkEmlmEbENEUGj0XhWm2CxWLiBgYGaZ8+eKREROI6bNhgMw6WlpcEbN240sCwL8Xg8bZOHzeP3+zkiamMRcWcS7FvpFIlE0vr6+na6XK4yIgKZTPaitbXV3NraOvVSfZJSef/+/YbR0dEGAABJkl5uAQBAXl7ebHt7+z2e5wMlJSU+s9kMiKhjEVGNiKBSqcKpgM+fP0+7dOnST6LRaBbLsglBEB7q9foHWVlZS6/IXlK/EREkSQIiAoZhXtHxubm5/Fu3bu0+f/7835VKZTi5oDIWEXOICFLaCwBgs9nyo9FoVlFRkcdgMIyoVKrIaqnr6OiwdHR0WNZLb29v7y9DoVB+8lDFk+AcNlUEVpokSbhKxXkrlorJSpIUJCJFOBxOz8vLWwAA0Gq1M3fu3Hnh8XgKr1y58sO6urpHer3enpGRsbwyyM2bNxsePXpUQ0SvLPL1d7lcPpvcwvTkWJCIaIKIwOPxZKecs7OzF3t6evrLy8vHJUlibDab9vLlyz81mUwlr69+JTT1ntp3IoK8vLzZgwcP3gMAmJ6ezk6OjbNE9BUi7p6YmFDU19fPpoJu3bp18fTp00M2m801NDSknZ6eLrh9+3arzWabPnz48HBxcXEwFbyurs7S3t7+YKM0e71eRXJbv2Jqa2sXEfFni4uLTEtLy3c0muO4FzqdbiIej8cjkYgsFArl2u12jd/vT19aWvpBMBjM5Xn+G57nN6zXg4ODDbFYTCZJ0q+poKDgC0QEn8/HjY2NydeadOjQocfd3d39ZWVlToZhSBTFqsnJyQoAALVaPbsRdHJyUh4IBDgigubm5i8Zk8kE9fX1zxHxvfn5eWxsbHSvNZlhGKmmpsbNcZwnMzMzrFKpnu7du9eiUqkCG4EHBgbqw+GwHAA6T548OcIAAJSUlFi2bNnSGwgE5LFYLK7RaL5dL4hcLo+q1Wofz/P+bdu2LWwixe8+efJECwAQi8XeN5lMEgMAIIqiJAiCFxHbPR6PUiaTzRUWFobfxr212+1Fw8PDe5In/8Oenp6vX+lArFarvbGxMRMRdzmdztK3Abfb7UWDg4PvJa/QJxcuXPh41Z7LYrF83tTUlIOITU6nszQej8d37Njx7feBmkymd1NfKknSn7u6ujrX7TLNZvNnOp0uk2GYXV6vV+n1erMyMjKicrl8U53m1NRU7t27dwWHw6FNpveTzs7Ozk039N3d3b8AgOspNVIoFDM8z7uLi4t9HMdFZDJZPCWDfr9/q9vtVni93qJQKMStqFofnjt37i9v/AtjNBppYWHhHMMwv2dZNnWlABFflr81JLOrtrb2T3v27HnzX5jXF5BIJHYj4iFE3ElEPBHlJEFBRJwiohEA+IcgCPfWA6bsv6nEjVSaQsrEAAAAAElFTkSuQmCC"
},
"$:/plugins/felixhayashi/vis/img/network/minus.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/minus.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffARwOJCdWb7wKAAAE/UlEQVRIx7WXXUwUVxTH/+fcMcTQLaFZd3cMu66MBVnFBOJEELqVByVSGxKNWWNMjK3xjViyyBNlQ9uXak31xQfS0kfeTOxXTK0bbP3I6io1mtldPoI7mwjLCuxiFDZpdvrgDtlStKjwTyYzc++d+7tzztxzzhCWoUAgQJFI5AMhxEeGYTQw8yYApQBARDNENALgJoCfFUX5s6enx/i/OelVnbt27WK73f4ZEZ0lIhC9GL7UmZkLH/XH4/FzAwMDudcG+3y+YwD6mBlEhPXr1497PB59y5YtSbfbnSkpKckCQCaTKXr06FFJLBazR6NR1/j4uMzMyOVyIKJP+vr6flg2+NChQ18A+JyIsG3bttiePXu02tra1HLccv/+/XXBYNCjaVpl3kpf9vb2di8eJ5aAngPQSUTYvXt3qK2tLSTL8nMsUw6H43l9fX382bNnf8fj8TIi+lBV1dJwOHz5pWCfz/c1M/uJCIcPH/7d5/NF8Yaqrq5OFhUVpWOxWDkR1amqWhwOh6/8B+zz+Y4R0WlmxtGjR39raWkZw1tKUZSZ4uLiKU3TFCFEg6qq+p07d/5aAB88eFAIIe4yM/bu3Xtz//79Q1ghud3u9Pz8fFbXdSczt7pcrq80TTMYAIQQJ4kI1dXVsSNHjjzECuvAgQMPPR5PlIggy/JJAOBAIEDMfBYAmpubNaySvF6vJoSAJElnA4EA8dDQkBcAnE7neE1NTWq1wFVVVU9kWR5nZszOznqZiFqICFVVVTpWWYqi6MyMNWvWtEhEtDMPTpoDIpHIe/39/Y2Tk5MOMxyaIdG8Lrw3DANCvNgghmEstNtstonW1tbriqJMA0B5eXkyFAqBiOqZiN4nIrjd7owJ7u/vb0ylUo5CyOLDjNHmwgzDABFBkiRIkgQhBKamphyXLl1qNOd1Op2ZfAiukIiolJlhxl4ASCaTDiEELly40Ps2pu3u7j6RTqcd5r3FYsnmF10qmUmgUEu1rZRMa0mGYcwwsz2TyRTZbLY5AJBleWJyctLR1tZ2otC8helvKb8vnpyZYbVaJ8z2p0+fFuX7ZpiZh5kZuq6XFCSK6w6HY+JlvpUkacn2wgUSEWw228S+ffuum/M+fvy4JN83JDHzLSJqHB4etm/fvn0CACoqKqa7urp+XGkzJxIJe96Ft5iIfgGAWCzmWu19rOu6K7/tfuWysrI/iAjJZFJ+8OCBdbWgIyMj1unpaZmZ4fV6/+Senh6DiPwAMDAw4Fkt8L179zx5//ubmppyLz6xmZnzeXNvvnjx4taVhgaDwa1jY2ObAWB+fv78Qj7WNM1QVTVBRK26rjstFssTl8uVWQno4ODghhs3bjTlv/zjXV1dd/9VgYTD4cEdO3YUE1FDNBrdtBLwwcHBDcFgsDm/hc50dnaeXrLmun379pW6urpSIqqLRqObstlstrKycvJNoNeuXdtqvqlhGOc7Ojr8r6wyQ6HQ5fr6+mIhREMikXAmEol31q5d+9xqtS6r0hwdHV139epVNRKJ1OTNe8bv9/uXXdCfOnXqUwDfmdHIbrePK4oS37hxY1KW5VmLxZI1w2AqlXo3Ho/bE4nEhnQ6LZuRi4iOt7e3f//avzCBQIDn5ubahRDfSJKEfH0GIlrIvy8JmR21tbXfNjU1vf4vzOIF5HK5RiL6mIh2MrPCzKV50AwRjTLzTQA/qap6/VVAU/8Apxa13K97LqUAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/network/plus.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/plus.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffARwOJQd0Gq2DAAAFq0lEQVRIx61XbUxTZxR+znmvMQY7xJT2XieI1jmoHwlIY1CG4KIExuSHITVqYtwM/wgSEI1hNrhfw5mpP9Q0G/tl+Gd0XzFkNoCIaex0RtJSPwZto7RFPooRMFm4++G9BGuBYnaS5va+99zzvOc5H++5hCTE4XCQz+f7TAjxhaqqO5h5PYA0ACCiUSJ6CqAHwG8Wi+V2c3OzupBNmu9hcXExm83mY0R0johA9FY90ZWZZ79aHwgEznd0dEwvGthutx8B0MrMICKsWrVq0Gq1Bjdu3BjJysqKpaamvgGAWCy2dGBgINXv95v7+voyBwcHFWbG9PQ0iOir1tbWn5MG3r9//xkA3xARtmzZ4t+zZ483Ly9vKJmwPHz4MN3lclm9Xu+nGkvfOp3O0/F6IgHoeQCNRITdu3e7a2pq3IqiTCBJkWV5oqCgIPD69et/A4HAaiLaabPZ0jwez805Pbbb7d8xcyMAHDhw4M+Kiop/4g37fL6VV69eLQyHwzIRQZbl8MGDB7uzs7NH4nXb29st169f/1y7PXv58uXG9zy22+1HiKiFmXH48OH28vLy/kQeXbx4cXckEpGZGUIITExMLA8EAiuLi4v98boWi2U0JSVl2Ov1WoQQO2w2W/DevXt/AwADQFVVlWDmVmZGWVlZT2lp6cBcVEajUZmZ4XQ6nVeuXHESEaLRqDxPZQzs2rWrR9toa1VVlZgBFkLUEhE2b97sP3ToUO+89RdXOkKI+FJ6T/bt29drtVr7iAiKotQCADscDmLmcwBQWlrqXbDwPwAYAIqKirxCCEiSdM7hcBA/fvy4CAAyMjIGc3NzFyyZREDJAOfk5LxUFGWQmTE+Pl7ERFRORMjJyQkmUy7xHkuSlBSwlmxBZsaSJUvKJSLargFHZpdMW1tbYTQalXUg3fjs//q9qqo4ceJENQCoqjqzbjKZwpWVld0Wi2UEANatWxdxu90gogImok+ICFlZWTHdWFtbW+HQ0JCsgyT6xTOgqiqICJIkQZIkCCEwPDws37hxo1DXzcjIiGkteINERGnMDL33AkAkEpGFELh06ZJzIfpaWlrm1Dl9+nT12NjYTKkZDIY32qbTJP0QiE+W+LX/S3S2JFVVR5nZHIvFlppMpkkAUBQlHI1G5ZqamurZ9M5OLN3TU6dOVSeKu341Go1hff3Vq1dLtWejzMxPmBnBYDB11kHRLctyeK7YSpL0Dkh84ulnt8lkCldUVHTrui9evEjVnj2WmPkuERU+efLEnJ+fHwaADRs2jDQ1Nf2SiKqTJ09WJ6LuzJkzC+ZDKBQyayG8y0T0OwD4/f7MxcQokccLSTAYzBRCAMAfvHr16i4iQiQSUR49emRMxsBsqpPtXE+fPjWOjIwozIyioqLb3NzcrBJRPQB0dHRYP8TjZOT+/ftWLf71JSUl029TbHT0gkZ39rVr1zYtBpiIoNE3p7hcrk39/f3ZADA1NXVhZhDwer2qzWYLEVFlMBjMMBgMLzMzM2OJjPT29n48NTW1vLOzc2tXV9dWZkZ6eno4Pz/fn0j/wYMHa+7cuVOibfhoU1PTX+9MIB6P58G2bdtSiGhHX1/f+rnA09PTh54/f75ycnJyuRACRqMxXFZW1r1ixYrJRKAul6tUK6GzjY2NLXNOmbW1teeJqJaZsXPnzp69e/f2fkiH6uzs3OTxeLZro+6FhoaGY/NOmW63+2ZBQUGKEGJHKBTKCIVCy5ctWzZhNBqTmjSfPXuWfuvWLZvP58vV6D1bX19fn/RAf/z48a8B/KjXqdlsHrRYLIG1a9dGFEUZNxgMb/Q2ODQ09FEgEDCHQqE1Y2Njit65iOhoXV3dT4v+hHE4HDw5OVknhPher10hxDuZPEfLbMjLy/uhpKRk8Z8w8RuYnp4uJKIviWg7M1uYOU0DGiWiZ8zcA+BXm83WPR+gLv8BUhzshlEbZ/0AAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/network/rightArrow.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/rightArrow.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffARwOJRIZx0loAAAGfElEQVRIx61XXUwb2RU+5147CIPrOoLYQ2LjYAdqjKOAmGAw1YYHsgqrCilZy1YUlG5ZVcoD2kYQP9G10valu/0hipSHKE0fiaiqRu0SrXYTFxdDBHhlIojH5kfgcWMwJoYpBeyksftQT+QQCE6aTxrNaGbu+c4959zvnouQB1wuF3Ic90NK6UeZTMZKCDEAgBIAABHXEHEOAEYB4Cu9Xj989erVzH428U0fT506RVQq1c8Q8beICIj/+323OyEkd2h3OBzuGxoaSr81sd1u/wQAbhNCABGhrKxsqbq6mjeZTDGdTicoFIoUAIAgCAWLi4uKUCikCgaD2qWlJYYQAul0GhDxJ7dv3/5j3sQOh+MXAPBzRITjx4+HTp8+Hairq4vnk5ZHjx6Vut3u6kAgUJWN0i9v3rz5+c7/6C6kfQDgRERobW0d6+rqGmMYZgvyhFqt3mpsbAxvbm7+JxwOH0HED1iWVfp8vq/3JLbb7b8mhHQjIpw/f/6+3W4PwjvCbDbHCgoK1kOhUAUiWliWLfL5fN++Rmy32z9BxC8IIXDx4sVv2traFuD/hF6vXysqKnoaCAT0lFIry7L8xMTE5Etim81GKaXfEULgzJkzo2fPnp2B9wSdTreeTCZTPM9rCCHtWq32V4FAICMBAKCUfoaIYDabQxcuXJjOx2AoFDrIcZz6+fPn1Gg0LtfU1OxZfOfOnZteXV09yHHcDxiG+QwAfoculwtnZ2fTAAA9PT1/qa2t3bd6Z2ZmDl6/fv1jAHi5fo1GY7Czs9MrlUp3Xbscx5XcunXrLACAXC4ntKys7ANE/LFGo1nq6Ojw5zNbr9d7dHFxUWsymQIMwyw/ffq0NJFIlPp8vgpBEKCqquo150tLS7empqbKtra25Mlk8u8EEdsQEYxGI59v3pLJ5AFCCMhksmednZ0PL1269GeVShUVBOH7w8PD1mvXrp2ZnJxkdik2nhACUqm0TYKITVniWE5YDvb39zevrKyoRTkUQyo+i4oGAGAwGNacTudXQ0NDeo/H0/DkyRPNnTt3ND6fb8Zut4/K5fJnAAAVFRWxsbExQMRGgojHEBF0Op0gEvf39zfH43F1LsnOK1erc7R93ul0/ollWb9UKk0vLCxU9vX1fbyxsXEAAECj0QhZhysliKgkhICovQAAsVhMTSmFGzdu3Hzb5VNYWPjcZrNNWCyW0ODgYFM0GtVyHKc+efIkL5fLU1mnlZLckInY7d27QLSRyWQw1zYAgCSTyawRQlSCIBQcOnRoGwCAYZjllZUVdVdX10935jQ31ydOnJh0OBzjOwpPcu/evdrp6enj6XSaymSyf1dXVy8BAGxsbBRkx69JCCGzhBAVz/MKkdjhcHgHBgZey7M4A4lE8or3IkZGRiq8Xq8lmUwWZ4tupr29/WVxRaNRRdbGjIQQ8hARm2dnZ1X19fXLAACVlZWJ3t7ev+4Vwrt3754YHx8/KToSDoeVg4OD1ng8Xpbdu//Z1NTkN5lMS7njIpGIKjvmoQQRBwHgSigU0gLAozwL6JlEIoFUKnVgYGCgkeM4EyIShUKxbjKZAq2trbvKLs/zWkopvHjx4p7kyJEj/4hGoxCLxZipqakSs9m8uh/xsWPHlkdHR2Fubq5aDLnBYAjabLY9JXNubq4kkUgwhBCwWq3D1OPxQH19/QYifri5uYkNDQ3h/YiVSuV2eXn5QnFxceLw4cPR5ubmiZaWFo5SumeTd//+/XpBEEoAoLujo2OUZhVlXCaTfZ5IJEqSyWTKaDSu5EOu1+vjBoMhVlJS8sYOxe121zx+/Lg2W/UfeTyeDAUACAQCGZZlI4jYzvO8Ri6Xr2q1WuF97Md+v798ZGSkJbsCPu3t7f3ulQ7E5/P5GxoaihDRGgwGDe+D3O/3l7vd7g+zTd+XTqfzi117rvHx8W8tFosSES3BYNCQSqVSVVVVK+9C6vF4asSZZjKZaz09Pd1v7DLHxsa+bmxsLKKUWiORiCYSiRQXFhZu7ZdHEfPz86UPHjxgOY6rzYb3y+7u7u68G/orV650AsAtUbVUKtWSXq8PHz16NMYwzL/kcnlKlMF4PP69cDisikQi5evr64x46kDETy9fvvyHtz7CuFwusr29fZlS+htRJimlgIhAKX1lf859RsSeurq637e0tLz9EWanA+l0uhkRf4SITYQQPSFEmSVaQ8R5QsgoAPyNZVnvmwhF/BfnjYAmDVlf5AAAAABJRU5ErkJggg=="
},
"$:/plugins/felixhayashi/vis/img/network/upArrow.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/upArrow.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffARwOJTG7oDgaAAAGZUlEQVRIx7WXXWxTVxLHZ+ZcY1mON8li44/GruPrsMT5UElzgSRswEIBOdUSARsZoUioHxIPCKUowBPUyrYv2y5aeOABtMsKJJ5YIaR+qBQwCS1u4zihUVw7DqTE1yFOlObDDmDTEHsfeo1SY1NTaefF8j3/md+5c86ZORehAHO5XBgMBv/MGHsrnU43EZEVAEoBABBxHhHvA4AHAD7jef7r7u7u9G/FxJcNbt26lbRa7fuIeBIRAfEXea5fIlrp2hUOh0/19PSkXhnsdDrfBoDzRASICAaDIWqz2cSqqqpps9kcKy4ufgoAEIvF5OPj48WhUEg7MjJiikajeiKCVCoFiPjO+fPn/1MweO/evX8DgBOICLW1taHt27cH6urqZgpZlqGhIY3b7bYFAoE/SVn68Ny5cx9k61gO6CkAOIaI0NLS0nfo0KE+vV7/ZKUmHo+v8ng8r42PjxevXr06IZfLlzNjOp3uSUNDQ/jx48fPwuFwGSJuEQSh1OfzfZkX7HQ6/05EXYgI+/btu+F0OkeyJxaPx1edOHHirwMDAza/32/1eDzWxsbG0Eo4AEBNTc20XC5fCIVCFkTcJAiC0ufzXX8B7HQ630bEj4kI9u/f/1Vra+uDXKk8c+bM5mg0aigvLxdLS0tjs7OzmomJCcWmTZvC2Vqe5+eVSuVsIBDgGWNNgiCI/f393z8Ht7e3M8bYABGBw+Hw7N69ezQXtL+/X3f9+vUmxtjygQMHvqqurp7o6+urnJ2d1eh0uocGg+FRto/ZbF5IJpNPRVE0ElGbyWT6KBAIpAkAgDHWiYhQU1MT6ujo8OfbONeuXatDRBAEYdhiscQsFkusvr5+mIjgxo0bdfn89uzZ47fZbCOICHq9vhMAgFwuFxLRSQCAHTt2BPI5X758uXpiYqKsqKjokdPpHFyxRIMqlerR5ORk2dWrV6vz+Tc3NwcYY8Bx3EmXy4U0OjraDABgNBqj69evz3lklpaWaHBw0MYYA4fD8Z1SqXyWGVMoFM9aWlq+4zgOhoaGbEtLS5QrRmVl5U96vT5KRBCPx5sJEVsRESorK8V8sz179uzmeDxeYjAYJrdt2/Zj9rjdbv9Rp9NNLi4ully8eHFzvjg8z4tEBDKZrJUQsVECT+cSDw8Pq4PB4DqO41Lt7e2efEF37drl4TguFQqF1gWDQU0ujcVimZbKawMhYgUigtlsjuUSh0IhHRFBbW1tYO3atXP5wFarda6qquoHjuNgbGxMl0tjNBpjUgleyyFiKRFBpvZmm0wmSxERLC8v04ULFzZkandHR4cXAODSpUvPn6XTaYaIIJPJlnPFUqlUT6VmUsplnPKZzWabunXrFgSDQRsRwQq9V1qKNzLPAQCICKxW61S+eBkdl06n54lIG4vF5GvWrElkCysqKuYOHjz439HRUV0ikVjl9Xo3ZAciIhAEwatQKH7meX6K5/mcS7K4uCiXwPMcEd0jIq0oisW5wBl4RUXFHACA1+vdwHHcC+C2trbvf6tzTU5OFkvZGiUi+hYR4d69e9pC2l5Ww3/h/8ssEolopVb5LSHi59LuNf1ecKFwURRNjDEAgC+orKzsNiLC9PS0fnh4WF1IgJWpLvSt79+/r56bm9MTETQ3N39N3d3daUTsAgDo6emx/b9SPTg4aJNORJfdbk/9ssXm509L6V535cqV6lcBIyJI6ctrbre7+sGDB+sAAJLJ5Onn/TgQCKQFQYggYpsoikaVSvWTyWTKWcn8fv9ryWSyqLe3983bt2+/SUSg0Wim6uvrQ7n0d+/eff3OnTt2acLvHT9+fOBXNxCfz3d348aNSkRsGhkZseaDazSamYcPH/4xkUgUMcZArVZPORyOb0pKShK5oG63e4e0kz85duzYx3lvmZ2dnacQsZOIYMuWLZ6dO3f64XdYb29vtc/na5SuuqePHDny/ktvmX19fV82NDQoGWNNkUjEGIlEihQKxRO1Wv2kEODY2Jjm5s2bQjAYXC+l95Ourq6ugi/0R48efRcA/pU5p1qtNsrzfLi8vHxar9fHVSrV00wZnJmZ+UM4HNZGIpHXFxYW9JmvDkR87/Dhw/9+5U8Yl8tFiUTiMGPsH5mzyxj71U7ObhDSkTlSV1f3T7vd/uqfMNkTSKVSmxHxL4jYSEQ8EZVKoHlEHCMiDwB8KgjCNy8DZux/ivJJxnpJh8sAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/network/zoomExtends.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/zoomExtends.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffARwOJgNYWjpZAAAGOElEQVRIx62XUUxUZxbH//9zJxkI4DgRMoxBRsVddDqYQFgHBTvsCxfZXdyYaBoSY9o0PLgm3YZd9EH70D5tu6Q18cmsNtm3No0+rGsYQQK60GABNcI4oxg7M8lepuNlABUdsXP7wL3jQIvF2pNMvnvvd+75fd+Zc853Ltvb2yEiIAkA2WvrniQSiQQB7Cb5BwD1IrIFgNOcTwGYJDlE8oJhGFe/afvCAAACMLAoBGCQ+HP/+zAMA7Zc0HLg1NSUkPwrya7lczmji6RLROoB/B0A6r5o6wDw2chbX2YMEwoAGWQgIotgy6CIZHcMAIlE4m2SZ62FrV+/XvN6vTGv15vYuHHj7Nq1a9MAMDMzY49Go45IJOIKh8Plmqa5RaQrk8l01X3V9s43B778HFkxsvZ5+PDhJVBzpx+SPEES27dvjzQ1NYVqamqSWIXcvHmzpK+vzxsKhSpNj3w0sv+rD2C6/Y9X/gKSUPx+f3bHJvQzkp0k0dTUNHzkyJFht9s9j1VKaWnp/M6dO6OPHz9+Ho1Gy0QkUBb2Of/vvd1NEpVx/4/BU1NT/xCRDpJoa2vrPXDgQBi/UKqqqhJ2u30mEolsJllXdvuNgilvpKcyvmMRXFdXBxGBpmlvk/xYRHDo0KFLLS0t9/GaUlFRkSooKNBDoVCFoij1ZeE3YgUFBTdILgaXpmmKiJwliebm5iFVVb89duxYu+WJ1tbWoN/vj64GNjIy4unu7lat++PHj5+enp4eGhgY2AXgbDKZ/LfL5fpezP/2PZKoqqqKHDx4cNxKlVeFAkBtbW10z549QRHJBu2+ffvGvV5vmCQURXlPRCCaplFEugBAVdWQZYAkWltbgxcuXFCvXbvmWS14dHTUc+nSJbW5uTmoKEr2+e7du0OKokBRlC5d12kTkTcBYMOGDVp1dXU2Zfbu3Rv0+/1RksGLFy+q58+fT83NzTmX572VhiICh8ORstvtTlVVgzU1NVEAQUvH6/U+cLvdWiKRcGcymTcFQAtJbNu2LZa7csu9O3bsiKbT6VR+fv4SqPWz2WzZReTl5TmfPXuWMqGwxpxgi5nvtNhI7jLBiZXcNzc353z06BFOnTp1+mVuPnr0aLthGM6V5jdv3pwYHh4GyZ02kr8hCY/HM7vSC7mB8jIxg2fF+bKyslnTzm9tJJ0iAqv2rgRejeSecj8la9asSZu2nLafU34V+GpsZc8FACmSmJ2dtb+uq38O/PDhQ7tpKyUk74oIYrGY49cAv0xP0zSHmRl3bCS/Jtlw9+5dV21t7dRPveBwOFJ5eXnOzs7O9lzjiqIs6VyKi4uxsLCQWgkci8Vcpv7XIiL/BYBIJFK+vAIBwNjYmCcvL8+5sLCQyoXabLYf5fTz589TdrvdOT4+7gEAa8wBlyuKAhG5aCN5xeyr3Ldu3Squqqp6AADBYFAlGezp6VGbmpqC1dXVq6rX4+PjnsHBQZVkcHBwUPX5fKcBYHJysnh6etpttj5XpbS01CDZAQD9/f3e3Jx8VSgA+Hy+aENDQ9CEZ5+PjY15Tc90rFu3LiPm5EnT3VvPnTvny23oent71Rs3bqz6kJiYmLB2nLXR19fnu3///lZT5SRJ8MSJExARJJPJd0ieURQF+/fvDzY0NETxK8j169c9vb29KkkYhvGu0+k8YxgGlMbGRpBEUVHR9fn5+QKS9eFweEtRUdGD8vLy2deF9vX1Wbv/ZLyx/2NPYttiRgQCgWxUFhYW9jx58sRJsi4cDm9Jp9PpysrK734JtL+/3zc0NPR7M5hOTjQOdJBE+dTWxZoeCASWNOiFhYXdT58+LRCR+ng8viEejxfm5+fPFxcXr6rTvHfvXsnly5d/Fw6Hq83U++R249UOkcXDw/Pd4o5tuVFsjSUlJZ26rkcA/OvOnTuVk5OTlS6XS6uoqIhu2rQp4Xa754qKitJWGUwmk2ui0agrHo97ZmZm3DmNwruhwJUzQmXxK4Ivqppt+YoNw7DgZ3Rd/xzA+wD+qeu6W9d19+jo6JLjL7eoWNeGYfyN5KehwJWM0NSDIGN8vzI4V0pKSjIi0qXr+qcAGkj+yTCMXSQrDMNwmodCCsA9ERki+R8A/5toHMgoVAASxItcFr4osT8Aaa5QMU/uqTYAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/timeline/delete.png": {
"title": "$:/plugins/felixhayashi/vis/img/timeline/delete.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAl2cEFnAAAAEAAAABAAXMatwwAAAVRJREFUOMt108FKG1EUBuBvYtxbRGwxiGBXeYCW0mVpDSKVvIJ0F/syJsFdn6GCkaZ9gro3G1u0ILQgheJKRUwXPQNnxvTAcGf+c/7/nPvfO8UEKLCFJg5w31aNqGtgG3c4xLSZyP0QgI8Tpu0quQhyPwTgsBnkAVYD3MM9DibVId5GbiW+B+VIt7hJha1IdhPWDayVsBvcFtHlDYZ4mgou8D7e+zXyN/TwuUhjbkSXLHIZ61KNvItxaYyayBDrZsf36DyGdilQE+ngA57UyD+xg08luTSxHvP/wRuRewDm7uV9WJ4hsBy5rczJJm7G/tcS6VesjxN2Hj4c5S10Qj2Tz/AunrOEr0VtB+Z6vMJ+zfkfcVQjnMbRvcRC5B/hBU4auMbVjBFHCRsFdp6wK1yXHjz37xItRuejfFQ1nwb4HXVfs4nPYsQv0p+oKlLgNf7gGP4Cw4ZUK7kMJVEAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDExLTA1LTE2VDExOjM1OjIxKzAyOjAw9uVF5gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMS0wNS0xNlQxMTozNToyMSswMjowMIe4/VoAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/readme": {
"title": "$:/plugins/felixhayashi/vis/readme",
"text": "! TW5-Vis.js\n\nA tiddlywiki plugin for the vis.js library.\n\n---\n\n! Notes on Copyright\n\n!! TiddlyWiki\n\nCreated by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright © Jeremy Ruston 2004-2007 Copyright © UnaMesa Association 2007-2014\n\nPublished under the following [licenses](https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses):\n\n1. BSD 3-clause \"New\" or \"Revised\" License (including any right to adopt any future version of a license if permitted)\n2. Creative Commons Attribution 3.0 (including any right to adopt any future version of a license if permitted)\n\n!! The **vis.js** library\n\nCopyright (c) 2014 [Almende B.V.](https://github.com/almende/vis)\n\nPublished under the following licenses:\n\n1. Apache License Version 2.0, January 2004 http://www.apache.org/licenses/\n2. MIT License (MIT)\n"
},
"$:/plugins/felixhayashi/vis/vis.css": {
"title": "$:/plugins/felixhayashi/vis/vis.css",
"type": "text/vnd.tiddlywiki",
"tags": "$:/tags/Stylesheet",
"text": "\\rules except list\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}}/>\n\\end\n\n.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=\"span\"]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:12px}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration-wrapper::after{clear:both;content:\"\";display:block}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:bold}div.vis-configuration.vis-config-label{width:120px;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:100px}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;padding:1px;margin:0;pointer-events:none}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid white;background-color:rgba(0,0,0,0);width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dedede',endColorstr='#c8c8c8',GradientType=0);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#3876c2',endColorstr='#385380',GradientType=0);box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9d9d9d',endColorstr='#c8c8c8',GradientType=0)}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dedede',endColorstr='#c8c8c8',GradientType=0);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:0;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:1px solid white;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:0;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,0.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:\" \";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,0.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:12px;margin-top:-12px}div.vis-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,0.2);pointer-events:none;z-index:5}div.vis-color-picker{position:absolute;top:0;left:30px;margin-top:-140px;margin-left:30px;width:310px;height:444px;z-index:1;padding:10px;border-radius:15px;background-color:#fff;display:none;box-shadow:rgba(0,0,0,0.5) 0 0 10px 0}div.vis-color-picker div.vis-arrow{position:absolute;top:147px;left:5px}div.vis-color-picker div.vis-arrow::after,div.vis-color-picker div.vis-arrow::before{right:100%;top:50%;border:solid transparent;content:\" \";height:0;width:0;position:absolute;pointer-events:none}div.vis-color-picker div.vis-arrow:after{border-color:rgba(255,255,255,0);border-right-color:#fff;border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{position:absolute;width:289px;height:289px;cursor:pointer}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{position:absolute;top:137px;left:137px;width:15px;height:15px;border-radius:15px;border:1px solid #fff;background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(to bottom,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4c4c4c',endColorstr='#131313',GradientType=0)}div.vis-color-picker div.vis-new-color{position:absolute;width:140px;height:20px;border:1px solid rgba(0,0,0,0.1);border-radius:5px;top:380px;left:159px;text-align:right;padding-right:2px;font-size:10px;color:rgba(0,0,0,0.4);vertical-align:middle;line-height:20px}div.vis-color-picker div.vis-initial-color{position:absolute;width:140px;height:20px;border:1px solid rgba(0,0,0,0.1);border-radius:5px;top:380px;left:10px;text-align:left;padding-left:2px;font-size:10px;color:rgba(0,0,0,0.4);vertical-align:middle;line-height:20px}div.vis-color-picker div.vis-label{position:absolute;width:300px;left:10px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{position:absolute;width:68px;height:25px;border-radius:10px;vertical-align:middle;text-align:center;line-height:25px;top:410px;border:2px solid #d9d9d9;background-color:#f7f7f7;cursor:pointer}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{width:290px;height:20px}div.vis-network div.vis-manipulation{box-sizing:content-box;border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#fcfcfc',GradientType=0);padding-top:4px;position:absolute;left:0;top:0;width:100%;height:28px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:5px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/cross.png\">>);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-close:hover{opacity:.6}div.vis-network div.vis-manipulation div.vis-button,div.vis-network div.vis-edit-mode div.vis-button{float:left;font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin-left:10px;cursor:pointer;padding:0 8px 0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-manipulation div.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,0.20)}div.vis-network div.vis-manipulation div.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,0.50)}div.vis-network div.vis-manipulation div.vis-button.vis-back{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/backIcon.png\">>)}div.vis-network div.vis-manipulation div.vis-button.vis-none:hover{box-shadow:1px 1px 8px rgba(0,0,0,0.0);cursor:default}div.vis-network div.vis-manipulation div.vis-button.vis-none:active{box-shadow:1px 1px 8px rgba(0,0,0,0.0)}div.vis-network div.vis-manipulation div.vis-button.vis-none{padding:0}div.vis-network div.vis-manipulation div.notification{margin:2px;font-weight:bold}div.vis-network div.vis-manipulation div.vis-button.vis-add{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/addNodeIcon.png\">>)}div.vis-network div.vis-manipulation div.vis-button.vis-edit,div.vis-network div.vis-edit-mode div.vis-button.vis-edit{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/editIcon.png\">>)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation div.vis-button.vis-connect{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/connectIcon.png\">>)}div.vis-network div.vis-manipulation div.vis-button.vis-delete{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/deleteIcon.png\">>)}div.vis-network div.vis-manipulation div.vis-label,div.vis-network div.vis-edit-mode div.vis-label{margin:0 0 0 23px;line-height:25px}div.vis-network div.vis-manipulation div.vis-separator-line{float:left;display:inline-block;width:1px;height:21px;background-color:#bdbdbd;margin:0 7px 0 15px}div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,0.30)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,0.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/upArrow.png\">>);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/downArrow.png\">>);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/leftArrow.png\">>);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/rightArrow.png\">>);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/plus.png\">>);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/minus.png\">>);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/zoomExtends.png\">>);bottom:50px;right:15px}.vis-current-time{background-color:#ff7f6e;width:2px;z-index:1;pointer-events:none}.vis-rolling-mode-btn{height:40px;width:40px;position:absolute;top:7px;right:20px;border-radius:50%;font-size:28px;cursor:pointer;opacity:.8;color:white;font-weight:bold;text-align:center;background:#3876c2}.vis-rolling-mode-btn:before{content:\"\\26F6\"}.vis-rolling-mode-btn:hover{opacity:1}.vis-custom-time{background-color:#6e94ff;width:2px;cursor:move;z-index:1}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,0.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,0.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-item{position:absolute;color:#1a1a1a;border-color:#97b0f8;border-width:1px;background-color:#d5ddf6;display:inline-block;z-index:1}.vis-item.vis-selected{border-color:#ffc200;background-color:#fff785;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-point.vis-selected{background-color:#fff785}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:0;background-color:rgba(213,221,246,0.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item-visible-frame{white-space:nowrap}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-onUpdateTime-tooltip{position:absolute;background:#4f81bd;color:white;width:200px;text-align:center;white-space:nowrap;padding:5px;border-radius:1px;transition:.4s;-o-transition:.4s;-moz-transition:.4s;-webkit-transition:.4s}.vis-item .vis-delete,.vis-item .vis-delete-rtl{position:absolute;top:0;width:24px;height:24px;box-sizing:border-box;padding:0 5px;cursor:pointer;-webkit-transition:background .2s linear;-moz-transition:background .2s linear;-ms-transition:background .2s linear;-o-transition:background .2s linear;transition:background .2s linear}.vis-item .vis-delete{right:-24px}.vis-item .vis-delete-rtl{left:-24px}.vis-item .vis-delete:after,.vis-item .vis-delete-rtl:after{content:\"\\00D7\";color:red;font-family:arial,sans-serif;font-size:22px;font-weight:bold;-webkit-transition:color .2s linear;-moz-transition:color .2s linear;-ms-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.vis-item .vis-delete:hover,.vis-item .vis-delete-rtl:hover{background:red}.vis-item .vis-delete:hover:after,.vis-item .vis-delete-rtl:hover:after{color:white}.vis-item .vis-drag-center{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.vis-item.vis-range .vis-drag-left{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;right:-4px;cursor:e-resize}.vis-range.vis-item.vis-readonly .vis-drag-left,.vis-range.vis-item.vis-readonly .vis-drag-right{cursor:auto}.vis-itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:0}.vis-nesting-group{cursor:pointer}.vis-nested-group{background:#f5f5f5}.vis-label.vis-nesting-group.expanded:before{content:\"\\25BC\"}.vis-label.vis-nesting-group.collapsed-rtl:before{content:\"\\25C0\"}.vis-label.vis-nesting-group.collapsed:before{content:\"\\25B6\"}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis-labelset .vis-label{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box}.vis-labelset .vis-label{border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label.draggable{cursor:pointer}.vis-labelset .vis-label:last-child{border-bottom:0}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-panel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top,.vis-panel.vis-bottom{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-left.vis-panel.vis-vertical-scroll,.vis-right.vis-panel.vis-vertical-scroll{height:100%;overflow-x:hidden;overflow-y:scroll}.vis-left.vis-panel.vis-vertical-scroll{direction:rtl}.vis-left.vis-panel.vis-vertical-scroll .vis-content{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll .vis-content{direction:rtl}.vis-panel.vis-center,.vis-panel.vis-top,.vis-panel.vis-bottom{border-left-style:solid;border-right-style:solid}.vis-background{overflow:hidden}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,0.8)}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1.0}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}.vis-time-axis{position:relative;overflow:hidden}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-vertical-rtl{position:absolute;border-right:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-timeline{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}"
},
"$:/plugins/felixhayashi/vis/vis.js": {
"title": "$:/plugins/felixhayashi/vis/vis.js",
"text": "/*\\\ntitle: $:/plugins/felixhayashi/vis/vis.js\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\\*/\n\n/*** TO AVOID STRANGE LIB ERRORS FROM BUBBLING UP *****************/\n\nif($tw.boot.tasks.trapErrors) {\n\n var defaultHandler = window.onerror;\n window.onerror = function(errorMsg, url, lineNumber) {\n \n if(errorMsg.indexOf(\"NS_ERROR_NOT_AVAILABLE\") !== -1\n && url == \"$:/plugins/felixhayashi/vis/vis.js\") {\n \n var text = \"Strange firefox related vis.js error (see #125)\";\n console.error(text, arguments);\n \n } else if(errorMsg.indexOf(\"Permission denied to access property\") !== -1) {\n \n var text = \"Strange firefox related vis.js error (see #163)\";\n console.error(text, arguments);\n \n } else if(defaultHandler) {\n \n defaultHandler.apply(this, arguments);\n \n }\n \n }\n \n}\n\n/******************************************************************/\n\n/**\n * vis.js\n * https://github.com/almende/vis\n *\n * A dynamic, browser-based visualization library.\n *\n * @version 4.21.0\n * @date 2017-10-12\n *\n * @license\n * Copyright (C) 2011-2017 Almende B.V, http://almende.com\n *\n * Vis.js is dual licensed under both\n *\n * * The Apache 2.0 License\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * and\n *\n * * The MIT License\n * http://opensource.org/licenses/MIT\n *\n * Vis.js may be distributed under either license.\n */\n\"use strict\";(function webpackUniversalModuleDefinition(root,factory){if(typeof exports===\"object\"&&typeof module===\"object\")module.exports=factory();else if(typeof define===\"function\"&&define.amd)define([],factory);else if(typeof exports===\"object\")exports[\"vis\"]=factory();else root[\"vis\"]=factory()})(this,function(){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{configurable:false,enumerable:true,get:getter})}};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module[\"default\"]}:function getModuleExports(){return module};__webpack_require__.d(getter,\"a\",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p=\"\";return __webpack_require__(__webpack_require__.s=123)}([function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;exports.default=function(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\")}}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _defineProperty=__webpack_require__(169);var _defineProperty2=_interopRequireDefault(_defineProperty);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if(\"value\"in descriptor)descriptor.writable=true;(0,_defineProperty2.default)(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}()},function(module,exports,__webpack_require__){\"use strict\";var _getIterator2=__webpack_require__(77);var _getIterator3=_interopRequireDefault(_getIterator2);var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var moment=__webpack_require__(9);var uuid=__webpack_require__(157);exports.isNumber=function(object){return object instanceof Number||typeof object==\"number\"};exports.recursiveDOMDelete=function(DOMobject){if(DOMobject){while(DOMobject.hasChildNodes()===true){exports.recursiveDOMDelete(DOMobject.firstChild);DOMobject.removeChild(DOMobject.firstChild)}}};exports.giveRange=function(min,max,total,value){if(max==min){return.5}else{var scale=1/(max-min);return Math.max(0,(value-min)*scale)}};exports.isString=function(object){return object instanceof String||typeof object==\"string\"};exports.isDate=function(object){if(object instanceof Date){return true}else if(exports.isString(object)){var match=ASPDateRegex.exec(object);if(match){return true}else if(!isNaN(Date.parse(object))){return true}}return false};exports.randomUUID=function(){return uuid.v4()};exports.assignAllKeys=function(obj,value){for(var prop in obj){if(obj.hasOwnProperty(prop)){if((0,_typeof3[\"default\"])(obj[prop])!==\"object\"){obj[prop]=value}}}};function copyOrDelete(a,b,prop,allowDeletion){var doDeletion=false;if(allowDeletion===true){doDeletion=b[prop]===null&&a[prop]!==undefined}if(doDeletion){delete a[prop]}else{a[prop]=b[prop]}}exports.fillIfDefined=function(a,b){var allowDeletion=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;for(var prop in a){if(b[prop]!==undefined){if(b[prop]===null||(0,_typeof3[\"default\"])(b[prop])!==\"object\"){copyOrDelete(a,b,prop,allowDeletion)}else{if((0,_typeof3[\"default\"])(a[prop])===\"object\"){exports.fillIfDefined(a[prop],b[prop],allowDeletion)}}}}};exports.extend=function(a,b){for(var i=1;i<arguments.length;i++){var other=arguments[i];for(var prop in other){if(other.hasOwnProperty(prop)){a[prop]=other[prop]}}}return a};exports.selectiveExtend=function(props,a,b){if(!Array.isArray(props)){throw new Error(\"Array with property names expected as first argument\")}for(var i=2;i<arguments.length;i++){var other=arguments[i];for(var p=0;p<props.length;p++){var prop=props[p];if(other&&other.hasOwnProperty(prop)){a[prop]=other[prop]}}}return a};exports.selectiveDeepExtend=function(props,a,b){var allowDeletion=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;if(Array.isArray(b)){throw new TypeError(\"Arrays are not supported by deepExtend\")}for(var p=0;p<props.length;p++){var prop=props[p];if(b.hasOwnProperty(prop)){if(b[prop]&&b[prop].constructor===Object){if(a[prop]===undefined){a[prop]={}}if(a[prop].constructor===Object){exports.deepExtend(a[prop],b[prop],false,allowDeletion)}else{copyOrDelete(a,b,prop,allowDeletion)}}else if(Array.isArray(b[prop])){throw new TypeError(\"Arrays are not supported by deepExtend\")}else{copyOrDelete(a,b,prop,allowDeletion)}}}return a};exports.selectiveNotDeepExtend=function(propsToExclude,a,b){var allowDeletion=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;if(Array.isArray(b)){throw new TypeError(\"Arrays are not supported by deepExtend\")}for(var prop in b){if(!b.hasOwnProperty(prop))continue;if(propsToExclude.indexOf(prop)!==-1)continue;if(b[prop]&&b[prop].constructor===Object){if(a[prop]===undefined){a[prop]={}}if(a[prop].constructor===Object){exports.deepExtend(a[prop],b[prop])}else{copyOrDelete(a,b,prop,allowDeletion)}}else if(Array.isArray(b[prop])){a[prop]=[];for(var i=0;i<b[prop].length;i++){a[prop].push(b[prop][i])}}else{copyOrDelete(a,b,prop,allowDeletion)}}return a};exports.deepExtend=function(a,b){var protoExtend=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var allowDeletion=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;for(var prop in b){if(b.hasOwnProperty(prop)||protoExtend===true){if(b[prop]&&b[prop].constructor===Object){if(a[prop]===undefined){a[prop]={}}if(a[prop].constructor===Object){exports.deepExtend(a[prop],b[prop],protoExtend)}else{copyOrDelete(a,b,prop,allowDeletion)}}else if(Array.isArray(b[prop])){a[prop]=[];for(var i=0;i<b[prop].length;i++){a[prop].push(b[prop][i])}}else{copyOrDelete(a,b,prop,allowDeletion)}}}return a};exports.equalArray=function(a,b){if(a.length!=b.length)return false;for(var i=0,len=a.length;i<len;i++){if(a[i]!=b[i])return false}return true};exports.convert=function(object,type){var match;if(object===undefined){return undefined}if(object===null){return null}if(!type){return object}if(!(typeof type===\"string\")&&!(type instanceof String)){throw new Error(\"Type must be a string\")}switch(type){case\"boolean\":case\"Boolean\":return Boolean(object);case\"number\":case\"Number\":if(exports.isString(object)&&!isNaN(Date.parse(object))){return moment(object).valueOf()}else{return Number(object.valueOf())}case\"string\":case\"String\":return String(object);case\"Date\":if(exports.isNumber(object)){return new Date(object)}if(object instanceof Date){return new Date(object.valueOf())}else if(moment.isMoment(object)){return new Date(object.valueOf())}if(exports.isString(object)){match=ASPDateRegex.exec(object);if(match){return new Date(Number(match[1]))}else{return moment(new Date(object)).toDate()}}else{throw new Error(\"Cannot convert object of type \"+exports.getType(object)+\" to type Date\")}case\"Moment\":if(exports.isNumber(object)){return moment(object)}if(object instanceof Date){return moment(object.valueOf())}else if(moment.isMoment(object)){return moment(object)}if(exports.isString(object)){match=ASPDateRegex.exec(object);if(match){return moment(Number(match[1]))}else{return moment(object)}}else{throw new Error(\"Cannot convert object of type \"+exports.getType(object)+\" to type Date\")}case\"ISODate\":if(exports.isNumber(object)){return new Date(object)}else if(object instanceof Date){return object.toISOString()}else if(moment.isMoment(object)){return object.toDate().toISOString()}else if(exports.isString(object)){match=ASPDateRegex.exec(object);if(match){return new Date(Number(match[1])).toISOString()}else{return moment(object).format()}}else{throw new Error(\"Cannot convert object of type \"+exports.getType(object)+\" to type ISODate\")}case\"ASPDate\":if(exports.isNumber(object)){return\"/Date(\"+object+\")/\"}else if(object instanceof Date){return\"/Date(\"+object.valueOf()+\")/\"}else if(exports.isString(object)){match=ASPDateRegex.exec(object);var value;if(match){value=new Date(Number(match[1])).valueOf()}else{value=new Date(object).valueOf()}return\"/Date(\"+value+\")/\"}else{throw new Error(\"Cannot convert object of type \"+exports.getType(object)+\" to type ASPDate\")}default:throw new Error('Unknown type \"'+type+'\"')}};var ASPDateRegex=/^\\/?Date\\((\\-?\\d+)/i;exports.getType=function(object){var type=typeof object===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(object);if(type==\"object\"){if(object===null){return\"null\"}if(object instanceof Boolean){return\"Boolean\"}if(object instanceof Number){return\"Number\"}if(object instanceof String){return\"String\"}if(Array.isArray(object)){return\"Array\"}if(object instanceof Date){return\"Date\"}return\"Object\"}else if(type==\"number\"){return\"Number\"}else if(type==\"boolean\"){return\"Boolean\"}else if(type==\"string\"){return\"String\"}else if(type===undefined){return\"undefined\"}return type};exports.copyAndExtendArray=function(arr,newValue){var newArr=[];for(var i=0;i<arr.length;i++){newArr.push(arr[i])}newArr.push(newValue);return newArr};exports.copyArray=function(arr){var newArr=[];for(var i=0;i<arr.length;i++){newArr.push(arr[i])}return newArr};exports.getAbsoluteLeft=function(elem){return elem.getBoundingClientRect().left};exports.getAbsoluteRight=function(elem){return elem.getBoundingClientRect().right};exports.getAbsoluteTop=function(elem){return elem.getBoundingClientRect().top};exports.addClassName=function(elem,classNames){var classes=elem.className.split(\" \");var newClasses=classNames.split(\" \");classes=classes.concat(newClasses.filter(function(className){return classes.indexOf(className)<0}));elem.className=classes.join(\" \")};exports.removeClassName=function(elem,classNames){var classes=elem.className.split(\" \");var oldClasses=classNames.split(\" \");classes=classes.filter(function(className){return oldClasses.indexOf(className)<0});elem.className=classes.join(\" \")};exports.forEach=function(object,callback){var i,len;if(Array.isArray(object)){for(i=0,len=object.length;i<len;i++){callback(object[i],i,object)}}else{for(i in object){if(object.hasOwnProperty(i)){callback(object[i],i,object)}}}};exports.toArray=function(object){var array=[];for(var prop in object){if(object.hasOwnProperty(prop))array.push(object[prop])}return array};exports.updateProperty=function(object,key,value){if(object[key]!==value){object[key]=value;return true}else{return false}};exports.throttle=function(fn){var scheduled=false;return function throttled(){if(!scheduled){scheduled=true;requestAnimationFrame(function(){scheduled=false;fn()})}}};exports.addEventListener=function(element,action,listener,useCapture){if(element.addEventListener){if(useCapture===undefined)useCapture=false;if(action===\"mousewheel\"&&navigator.userAgent.indexOf(\"Firefox\")>=0){action=\"DOMMouseScroll\"}element.addEventListener(action,listener,useCapture)}else{element.attachEvent(\"on\"+action,listener)}};exports.removeEventListener=function(element,action,listener,useCapture){if(element.removeEventListener){if(useCapture===undefined)useCapture=false;if(action===\"mousewheel\"&&navigator.userAgent.indexOf(\"Firefox\")>=0){action=\"DOMMouseScroll\"}element.removeEventListener(action,listener,useCapture)}else{element.detachEvent(\"on\"+action,listener)}};exports.preventDefault=function(event){if(!event)event=window.event;if(event.preventDefault){event.preventDefault()}else{event.returnValue=false}};exports.getTarget=function(event){if(!event){event=window.event}var target;if(event.target){target=event.target}else if(event.srcElement){target=event.srcElement}if(target.nodeType!=undefined&&target.nodeType==3){target=target.parentNode}return target};exports.hasParent=function(element,parent){var e=element;while(e){if(e===parent){return true}e=e.parentNode}return false};exports.option={};exports.option.asBoolean=function(value,defaultValue){if(typeof value==\"function\"){value=value()}if(value!=null){return value!=false}return defaultValue||null};exports.option.asNumber=function(value,defaultValue){if(typeof value==\"function\"){value=value()}if(value!=null){return Number(value)||defaultValue||null}return defaultValue||null};exports.option.asString=function(value,defaultValue){if(typeof value==\"function\"){value=value()}if(value!=null){return String(value)}return defaultValue||null};exports.option.asSize=function(value,defaultValue){if(typeof value==\"function\"){value=value()}if(exports.isString(value)){return value}else if(exports.isNumber(value)){return value+\"px\"}else{return defaultValue||null}};exports.option.asElement=function(value,defaultValue){if(typeof value==\"function\"){value=value()}return value||defaultValue||null};exports.hexToRGB=function(hex){var shorthandRegex=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;hex=hex.replace(shorthandRegex,function(m,r,g,b){return r+r+g+g+b+b});var result=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);return result?{r:parseInt(result[1],16),g:parseInt(result[2],16),b:parseInt(result[3],16)}:null};exports.overrideOpacity=function(color,opacity){var rgb;if(color.indexOf(\"rgba\")!=-1){return color}else if(color.indexOf(\"rgb\")!=-1){rgb=color.substr(color.indexOf(\"(\")+1).replace(\")\",\"\").split(\",\");return\"rgba(\"+rgb[0]+\",\"+rgb[1]+\",\"+rgb[2]+\",\"+opacity+\")\"}else{rgb=exports.hexToRGB(color);if(rgb==null){return color}else{return\"rgba(\"+rgb.r+\",\"+rgb.g+\",\"+rgb.b+\",\"+opacity+\")\"}}};exports.RGBToHex=function(red,green,blue){return\"#\"+((1<<24)+(red<<16)+(green<<8)+blue).toString(16).slice(1)};exports.parseColor=function(color){var c;if(exports.isString(color)===true){if(exports.isValidRGB(color)===true){var rgb=color.substr(4).substr(0,color.length-5).split(\",\").map(function(value){return parseInt(value)});color=exports.RGBToHex(rgb[0],rgb[1],rgb[2])}if(exports.isValidHex(color)===true){var hsv=exports.hexToHSV(color);var lighterColorHSV={h:hsv.h,s:hsv.s*.8,v:Math.min(1,hsv.v*1.02)};var darkerColorHSV={h:hsv.h,s:Math.min(1,hsv.s*1.25),v:hsv.v*.8};var darkerColorHex=exports.HSVToHex(darkerColorHSV.h,darkerColorHSV.s,darkerColorHSV.v);var lighterColorHex=exports.HSVToHex(lighterColorHSV.h,lighterColorHSV.s,lighterColorHSV.v);c={background:color,border:darkerColorHex,highlight:{background:lighterColorHex,border:darkerColorHex},hover:{background:lighterColorHex,border:darkerColorHex}}}else{c={background:color,border:color,highlight:{background:color,border:color},hover:{background:color,border:color}}}}else{c={};c.background=color.background||undefined;c.border=color.border||undefined;if(exports.isString(color.highlight)){c.highlight={border:color.highlight,background:color.highlight}}else{c.highlight={};c.highlight.background=color.highlight&&color.highlight.background||undefined;c.highlight.border=color.highlight&&color.highlight.border||undefined}if(exports.isString(color.hover)){c.hover={border:color.hover,background:color.hover}}else{c.hover={};c.hover.background=color.hover&&color.hover.background||undefined;c.hover.border=color.hover&&color.hover.border||undefined}}return c};exports.RGBToHSV=function(red,green,blue){red=red/255;green=green/255;blue=blue/255;var minRGB=Math.min(red,Math.min(green,blue));var maxRGB=Math.max(red,Math.max(green,blue));if(minRGB==maxRGB){return{h:0,s:0,v:minRGB}}var d=red==minRGB?green-blue:blue==minRGB?red-green:blue-red;var h=red==minRGB?3:blue==minRGB?1:5;var hue=60*(h-d/(maxRGB-minRGB))/360;var saturation=(maxRGB-minRGB)/maxRGB;var value=maxRGB;return{h:hue,s:saturation,v:value}};var cssUtil={split:function split(cssText){var styles={};cssText.split(\";\").forEach(function(style){if(style.trim()!=\"\"){var parts=style.split(\":\");var key=parts[0].trim();var value=parts[1].trim();styles[key]=value}});return styles},join:function join(styles){return(0,_keys2[\"default\"])(styles).map(function(key){return key+\": \"+styles[key]}).join(\"; \")}};exports.addCssText=function(element,cssText){var currentStyles=cssUtil.split(element.style.cssText);var newStyles=cssUtil.split(cssText);var styles=exports.extend(currentStyles,newStyles);element.style.cssText=cssUtil.join(styles)};exports.removeCssText=function(element,cssText){var styles=cssUtil.split(element.style.cssText);var removeStyles=cssUtil.split(cssText);for(var key in removeStyles){if(removeStyles.hasOwnProperty(key)){delete styles[key]}}element.style.cssText=cssUtil.join(styles)};exports.HSVToRGB=function(h,s,v){var r,g,b;var i=Math.floor(h*6);var f=h*6-i;var p=v*(1-s);var q=v*(1-f*s);var t=v*(1-(1-f)*s);switch(i%6){case 0:r=v,g=t,b=p;break;case 1:r=q,g=v,b=p;break;case 2:r=p,g=v,b=t;break;case 3:r=p,g=q,b=v;break;case 4:r=t,g=p,b=v;break;case 5:r=v,g=p,b=q;break}return{r:Math.floor(r*255),g:Math.floor(g*255),b:Math.floor(b*255)}};exports.HSVToHex=function(h,s,v){var rgb=exports.HSVToRGB(h,s,v);return exports.RGBToHex(rgb.r,rgb.g,rgb.b)};exports.hexToHSV=function(hex){var rgb=exports.hexToRGB(hex);return exports.RGBToHSV(rgb.r,rgb.g,rgb.b)};exports.isValidHex=function(hex){var isOk=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);return isOk};exports.isValidRGB=function(rgb){rgb=rgb.replace(\" \",\"\");var isOk=/rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/i.test(rgb);return isOk};exports.isValidRGBA=function(rgba){rgba=rgba.replace(\" \",\"\");var isOk=/rgba\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),(.{1,3})\\)/i.test(rgba);return isOk};exports.selectiveBridgeObject=function(fields,referenceObject){if(referenceObject!==null&&(typeof referenceObject===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(referenceObject))===\"object\"){var objectTo=(0,_create2[\"default\"])(referenceObject);for(var i=0;i<fields.length;i++){if(referenceObject.hasOwnProperty(fields[i])){if((0,_typeof3[\"default\"])(referenceObject[fields[i]])==\"object\"){objectTo[fields[i]]=exports.bridgeObject(referenceObject[fields[i]])}}}return objectTo}else{return null}};exports.bridgeObject=function(referenceObject){if(referenceObject!==null&&(typeof referenceObject===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(referenceObject))===\"object\"){var objectTo=(0,_create2[\"default\"])(referenceObject);if(referenceObject instanceof Element){objectTo=referenceObject}else{objectTo=(0,_create2[\"default\"])(referenceObject);for(var i in referenceObject){if(referenceObject.hasOwnProperty(i)){if((0,_typeof3[\"default\"])(referenceObject[i])==\"object\"){objectTo[i]=exports.bridgeObject(referenceObject[i])}}}}return objectTo}else{return null}};exports.insertSort=function(a,compare){for(var i=0;i<a.length;i++){var k=a[i];for(var j=i;j>0&&compare(k,a[j-1])<0;j--){a[j]=a[j-1]}a[j]=k}return a};exports.mergeOptions=function(mergeTarget,options,option){var globalOptions=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var isPresent=function isPresent(obj){return obj!==null&&obj!==undefined};var isObject=function isObject(obj){return obj!==null&&(typeof obj===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(obj))===\"object\"};var isEmpty=function isEmpty(obj){for(var x in obj){if(obj.hasOwnProperty(x))return false}return true};if(!isObject(mergeTarget)){throw new Error(\"Parameter mergeTarget must be an object\")}if(!isObject(options)){throw new Error(\"Parameter options must be an object\")}if(!isPresent(option)){throw new Error(\"Parameter option must have a value\")}if(!isObject(globalOptions)){throw new Error(\"Parameter globalOptions must be an object\")}var doMerge=function doMerge(target,options,option){if(!isObject(target[option])){target[option]={}}var src=options[option];var dst=target[option];for(var prop in src){if(src.hasOwnProperty(prop)){dst[prop]=src[prop]}}};var srcOption=options[option];var globalPassed=isObject(globalOptions)&&!isEmpty(globalOptions);var globalOption=globalPassed?globalOptions[option]:undefined;var globalEnabled=globalOption?globalOption.enabled:undefined;if(srcOption===undefined){return}if(typeof srcOption===\"boolean\"){if(!isObject(mergeTarget[option])){mergeTarget[option]={}}mergeTarget[option].enabled=srcOption;return}if(srcOption===null&&!isObject(mergeTarget[option])){if(isPresent(globalOption)){mergeTarget[option]=(0,_create2[\"default\"])(globalOption)}else{return}}if(!isObject(srcOption)){return}var enabled=true;if(srcOption.enabled!==undefined){enabled=srcOption.enabled}else{if(globalEnabled!==undefined){enabled=globalOption.enabled}}doMerge(mergeTarget,options,option);mergeTarget[option].enabled=enabled};exports.binarySearchCustom=function(orderedItems,comparator,field,field2){var maxIterations=1e4;var iteration=0;var low=0;var high=orderedItems.length-1;while(low<=high&&iteration<maxIterations){var middle=Math.floor((low+high)/2);var item=orderedItems[middle];var value=field2===undefined?item[field]:item[field][field2];var searchResult=comparator(value);if(searchResult==0){return middle}else if(searchResult==-1){low=middle+1}else{high=middle-1}iteration++}return-1};exports.binarySearchValue=function(orderedItems,target,field,sidePreference,comparator){var maxIterations=1e4;var iteration=0;var low=0;var high=orderedItems.length-1;var prevValue,value,nextValue,middle;comparator=comparator!=undefined?comparator:function(a,b){return a==b?0:a<b?-1:1};while(low<=high&&iteration<maxIterations){middle=Math.floor(.5*(high+low));prevValue=orderedItems[Math.max(0,middle-1)][field];value=orderedItems[middle][field];nextValue=orderedItems[Math.min(orderedItems.length-1,middle+1)][field];if(comparator(value,target)==0){return middle}else if(comparator(prevValue,target)<0&&comparator(value,target)>0){return sidePreference==\"before\"?Math.max(0,middle-1):middle}else if(comparator(value,target)<0&&comparator(nextValue,target)>0){return sidePreference==\"before\"?middle:Math.min(orderedItems.length-1,middle+1)}else{if(comparator(value,target)<0){low=middle+1}else{high=middle-1}}iteration++}return-1};exports.easingFunctions={linear:function linear(t){return t},easeInQuad:function easeInQuad(t){return t*t},easeOutQuad:function easeOutQuad(t){return t*(2-t)},easeInOutQuad:function easeInOutQuad(t){return t<.5?2*t*t:-1+(4-2*t)*t},easeInCubic:function easeInCubic(t){return t*t*t},easeOutCubic:function easeOutCubic(t){return--t*t*t+1},easeInOutCubic:function easeInOutCubic(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function easeInQuart(t){return t*t*t*t},easeOutQuart:function easeOutQuart(t){return 1- --t*t*t*t},easeInOutQuart:function easeInOutQuart(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function easeInQuint(t){return t*t*t*t*t},easeOutQuint:function easeOutQuint(t){return 1+--t*t*t*t*t},easeInOutQuint:function easeInOutQuint(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}};exports.getScrollBarWidth=function(){var inner=document.createElement(\"p\");inner.style.width=\"100%\";inner.style.height=\"200px\";var outer=document.createElement(\"div\");outer.style.position=\"absolute\";outer.style.top=\"0px\";outer.style.left=\"0px\";outer.style.visibility=\"hidden\";outer.style.width=\"200px\";outer.style.height=\"150px\";outer.style.overflow=\"hidden\";outer.appendChild(inner);document.body.appendChild(outer);var w1=inner.offsetWidth;outer.style.overflow=\"scroll\";var w2=inner.offsetWidth;if(w1==w2)w2=outer.clientWidth;document.body.removeChild(outer);return w1-w2};exports.topMost=function(pile,accessors){var candidate=void 0;if(!Array.isArray(accessors)){accessors=[accessors]}var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=(0,_getIterator3[\"default\"])(pile),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var member=_step.value;if(member){candidate=member[accessors[0]];for(var i=1;i<accessors.length;i++){if(candidate){candidate=candidate[accessors[i]]}else{continue}}if(typeof candidate!=\"undefined\"){break}}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator[\"return\"]){_iterator[\"return\"]()}}finally{if(_didIteratorError){throw _iteratorError}}}return candidate}},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(194),__esModule:true}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=function(self,call){if(!self){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return call&&((typeof call===\"undefined\"?\"undefined\":(0,_typeof3.default)(call))===\"object\"||typeof call===\"function\")?call:self}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _setPrototypeOf=__webpack_require__(196);var _setPrototypeOf2=_interopRequireDefault(_setPrototypeOf);var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=function(subClass,superClass){if(typeof superClass!==\"function\"&&superClass!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+(typeof superClass===\"undefined\"?\"undefined\":(0,_typeof3.default)(superClass)))}subClass.prototype=(0,_create2.default)(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)_setPrototypeOf2.default?(0,_setPrototypeOf2.default)(subClass,superClass):subClass.__proto__=superClass}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _iterator=__webpack_require__(142);var _iterator2=_interopRequireDefault(_iterator);var _symbol=__webpack_require__(144);var _symbol2=_interopRequireDefault(_symbol);var _typeof=typeof _symbol2.default===\"function\"&&typeof _iterator2.default===\"symbol\"?function(obj){return typeof obj}:function(obj){return obj&&typeof _symbol2.default===\"function\"&&obj.constructor===_symbol2.default&&obj!==_symbol2.default.prototype?\"symbol\":typeof obj};function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=typeof _symbol2.default===\"function\"&&_typeof(_iterator2.default)===\"symbol\"?function(obj){return typeof obj===\"undefined\"?\"undefined\":_typeof(obj)}:function(obj){return obj&&typeof _symbol2.default===\"function\"&&obj.constructor===_symbol2.default&&obj!==_symbol2.default.prototype?\"symbol\":typeof obj===\"undefined\"?\"undefined\":_typeof(obj)}},function(module,exports){var core=module.exports={version:\"2.5.1\"};if(typeof __e==\"number\")__e=core},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(140),__esModule:true}},function(module,exports,__webpack_require__){\"use strict\";module.exports=typeof window!==\"undefined\"&&window[\"moment\"]||__webpack_require__(154)},function(module,exports,__webpack_require__){\"use strict\";function hammerMock(){var noop=function noop(){};return{on:noop,off:noop,destroy:noop,emit:noop,get:function get(m){return{set:noop}}}}if(typeof window!==\"undefined\"){var propagating=__webpack_require__(175);var Hammer=window[\"Hammer\"]||__webpack_require__(176);module.exports=propagating(Hammer,{preventDefault:\"mouse\"})}else{module.exports=function(){return hammerMock()}}},function(module,exports,__webpack_require__){\"use strict\";var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Queue=__webpack_require__(43);function DataSet(data,options){if(data&&!Array.isArray(data)){options=data;data=null}this._options=options||{};this._data={};this.length=0;this._fieldId=this._options.fieldId||\"id\";this._type={};if(this._options.type){var fields=(0,_keys2[\"default\"])(this._options.type);for(var i=0,len=fields.length;i<len;i++){var field=fields[i];var value=this._options.type[field];if(value==\"Date\"||value==\"ISODate\"||value==\"ASPDate\"){this._type[field]=\"Date\"}else{this._type[field]=value}}}this._subscribers={};if(data){this.add(data)}this.setOptions(options)}DataSet.prototype.setOptions=function(options){if(options&&options.queue!==undefined){if(options.queue===false){if(this._queue){this._queue.destroy();delete this._queue}}else{if(!this._queue){this._queue=Queue.extend(this,{replace:[\"add\",\"update\",\"remove\"]})}if((0,_typeof3[\"default\"])(options.queue)===\"object\"){this._queue.setOptions(options.queue)}}}};DataSet.prototype.on=function(event,callback){var subscribers=this._subscribers[event];if(!subscribers){subscribers=[];this._subscribers[event]=subscribers}subscribers.push({callback:callback})};DataSet.prototype.off=function(event,callback){var subscribers=this._subscribers[event];if(subscribers){this._subscribers[event]=subscribers.filter(function(listener){return listener.callback!=callback})}};DataSet.prototype._trigger=function(event,params,senderId){if(event==\"*\"){throw new Error(\"Cannot trigger event *\")}var subscribers=[];if(event in this._subscribers){subscribers=subscribers.concat(this._subscribers[event])}if(\"*\"in this._subscribers){subscribers=subscribers.concat(this._subscribers[\"*\"])}for(var i=0,len=subscribers.length;i<len;i++){var subscriber=subscribers[i];if(subscriber.callback){subscriber.callback(event,params,senderId||null)}}};DataSet.prototype.add=function(data,senderId){var addedIds=[],id,me=this;if(Array.isArray(data)){for(var i=0,len=data.length;i<len;i++){id=me._addItem(data[i]);addedIds.push(id)}}else if(data&&(typeof data===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(data))===\"object\"){id=me._addItem(data);addedIds.push(id)}else{throw new Error(\"Unknown dataType\")}if(addedIds.length){this._trigger(\"add\",{items:addedIds},senderId)}return addedIds};DataSet.prototype.update=function(data,senderId){var addedIds=[];var updatedIds=[];var oldData=[];var updatedData=[];var me=this;var fieldId=me._fieldId;var addOrUpdate=function addOrUpdate(item){var id=item[fieldId];if(me._data[id]){var oldItem=util.extend({},me._data[id]);id=me._updateItem(item);updatedIds.push(id);updatedData.push(item);oldData.push(oldItem)}else{id=me._addItem(item);addedIds.push(id)}};if(Array.isArray(data)){for(var i=0,len=data.length;i<len;i++){if(data[i]&&(0,_typeof3[\"default\"])(data[i])===\"object\"){addOrUpdate(data[i])}else{console.warn(\"Ignoring input item, which is not an object at index \"+i)}}}else if(data&&(typeof data===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(data))===\"object\"){addOrUpdate(data)}else{throw new Error(\"Unknown dataType\")}if(addedIds.length){this._trigger(\"add\",{items:addedIds},senderId)}if(updatedIds.length){var props={items:updatedIds,oldData:oldData,data:updatedData};this._trigger(\"update\",props,senderId)}return addedIds.concat(updatedIds)};DataSet.prototype.get=function(args){var me=this;var id,ids,options;var firstType=util.getType(arguments[0]);if(firstType==\"String\"||firstType==\"Number\"){id=arguments[0];options=arguments[1]}else if(firstType==\"Array\"){\nids=arguments[0];options=arguments[1]}else{options=arguments[0]}var returnType;if(options&&options.returnType){var allowedValues=[\"Array\",\"Object\"];returnType=allowedValues.indexOf(options.returnType)==-1?\"Array\":options.returnType}else{returnType=\"Array\"}var type=options&&options.type||this._options.type;var filter=options&&options.filter;var items=[],item,itemIds,itemId,i,len;if(id!=undefined){item=me._getItem(id,type);if(item&&filter&&!filter(item)){item=null}}else if(ids!=undefined){for(i=0,len=ids.length;i<len;i++){item=me._getItem(ids[i],type);if(!filter||filter(item)){items.push(item)}}}else{itemIds=(0,_keys2[\"default\"])(this._data);for(i=0,len=itemIds.length;i<len;i++){itemId=itemIds[i];item=me._getItem(itemId,type);if(!filter||filter(item)){items.push(item)}}}if(options&&options.order&&id==undefined){this._sort(items,options.order)}if(options&&options.fields){var fields=options.fields;if(id!=undefined){item=this._filterFields(item,fields)}else{for(i=0,len=items.length;i<len;i++){items[i]=this._filterFields(items[i],fields)}}}if(returnType==\"Object\"){var result={},resultant;for(i=0,len=items.length;i<len;i++){resultant=items[i];result[resultant.id]=resultant}return result}else{if(id!=undefined){return item}else{return items}}};DataSet.prototype.getIds=function(options){var data=this._data,filter=options&&options.filter,order=options&&options.order,type=options&&options.type||this._options.type,itemIds=(0,_keys2[\"default\"])(data),i,len,id,item,items,ids=[];if(filter){if(order){items=[];for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];item=this._getItem(id,type);if(filter(item)){items.push(item)}}this._sort(items,order);for(i=0,len=items.length;i<len;i++){ids.push(items[i][this._fieldId])}}else{for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];item=this._getItem(id,type);if(filter(item)){ids.push(item[this._fieldId])}}}}else{if(order){items=[];for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];items.push(data[id])}this._sort(items,order);for(i=0,len=items.length;i<len;i++){ids.push(items[i][this._fieldId])}}else{for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];item=data[id];ids.push(item[this._fieldId])}}}return ids};DataSet.prototype.getDataSet=function(){return this};DataSet.prototype.forEach=function(callback,options){var filter=options&&options.filter,type=options&&options.type||this._options.type,data=this._data,itemIds=(0,_keys2[\"default\"])(data),i,len,item,id;if(options&&options.order){var items=this.get(options);for(i=0,len=items.length;i<len;i++){item=items[i];id=item[this._fieldId];callback(item,id)}}else{for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];item=this._getItem(id,type);if(!filter||filter(item)){callback(item,id)}}}};DataSet.prototype.map=function(callback,options){var filter=options&&options.filter,type=options&&options.type||this._options.type,mappedItems=[],data=this._data,itemIds=(0,_keys2[\"default\"])(data),i,len,id,item;for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];item=this._getItem(id,type);if(!filter||filter(item)){mappedItems.push(callback(item,id))}}if(options&&options.order){this._sort(mappedItems,options.order)}return mappedItems};DataSet.prototype._filterFields=function(item,fields){if(!item){return item}var filteredItem={},itemFields=(0,_keys2[\"default\"])(item),len=itemFields.length,i,field;if(Array.isArray(fields)){for(i=0;i<len;i++){field=itemFields[i];if(fields.indexOf(field)!=-1){filteredItem[field]=item[field]}}}else{for(i=0;i<len;i++){field=itemFields[i];if(fields.hasOwnProperty(field)){filteredItem[fields[field]]=item[field]}}}return filteredItem};DataSet.prototype._sort=function(items,order){if(util.isString(order)){var name=order;items.sort(function(a,b){var av=a[name];var bv=b[name];return av>bv?1:av<bv?-1:0})}else if(typeof order===\"function\"){items.sort(order)}else{throw new TypeError(\"Order must be a function or a string\")}};DataSet.prototype.remove=function(id,senderId){var removedIds=[],removedItems=[],ids=[],i,len,itemId,item;ids=Array.isArray(id)?id:[id];for(i=0,len=ids.length;i<len;i++){item=this._remove(ids[i]);if(item){itemId=item[this._fieldId];if(itemId!=undefined){removedIds.push(itemId);removedItems.push(item)}}}if(removedIds.length){this._trigger(\"remove\",{items:removedIds,oldData:removedItems},senderId)}return removedIds};DataSet.prototype._remove=function(id){var item,ident;if(util.isNumber(id)||util.isString(id)){ident=id}else if(id&&(typeof id===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(id))===\"object\"){ident=id[this._fieldId]}if(ident!==undefined&&this._data[ident]){item=this._data[ident];delete this._data[ident];this.length--;return item}return null};DataSet.prototype.clear=function(senderId){var i,len;var ids=(0,_keys2[\"default\"])(this._data);var items=[];for(i=0,len=ids.length;i<len;i++){items.push(this._data[ids[i]])}this._data={};this.length=0;this._trigger(\"remove\",{items:ids,oldData:items},senderId);return ids};DataSet.prototype.max=function(field){var data=this._data,itemIds=(0,_keys2[\"default\"])(data),max=null,maxField=null,i,len;for(i=0,len=itemIds.length;i<len;i++){var id=itemIds[i];var item=data[id];var itemField=item[field];if(itemField!=null&&(!max||itemField>maxField)){max=item;maxField=itemField}}return max};DataSet.prototype.min=function(field){var data=this._data,itemIds=(0,_keys2[\"default\"])(data),min=null,minField=null,i,len;for(i=0,len=itemIds.length;i<len;i++){var id=itemIds[i];var item=data[id];var itemField=item[field];if(itemField!=null&&(!min||itemField<minField)){min=item;minField=itemField}}return min};DataSet.prototype.distinct=function(field){var data=this._data;var itemIds=(0,_keys2[\"default\"])(data);var values=[];var fieldType=this._options.type&&this._options.type[field]||null;var count=0;var i,j,len;for(i=0,len=itemIds.length;i<len;i++){var id=itemIds[i];var item=data[id];var value=item[field];var exists=false;for(j=0;j<count;j++){if(values[j]==value){exists=true;break}}if(!exists&&value!==undefined){values[count]=value;count++}}if(fieldType){for(i=0,len=values.length;i<len;i++){values[i]=util.convert(values[i],fieldType)}}return values};DataSet.prototype._addItem=function(item){var id=item[this._fieldId];if(id!=undefined){if(this._data[id]){throw new Error(\"Cannot add item: item with id \"+id+\" already exists\")}}else{id=util.randomUUID();item[this._fieldId]=id}var d={},fields=(0,_keys2[\"default\"])(item),i,len;for(i=0,len=fields.length;i<len;i++){var field=fields[i];var fieldType=this._type[field];d[field]=util.convert(item[field],fieldType)}this._data[id]=d;this.length++;return id};DataSet.prototype._getItem=function(id,types){var field,value,i,len;var raw=this._data[id];if(!raw){return null}var converted={},fields=(0,_keys2[\"default\"])(raw);if(types){for(i=0,len=fields.length;i<len;i++){field=fields[i];value=raw[field];converted[field]=util.convert(value,types[field])}}else{for(i=0,len=fields.length;i<len;i++){field=fields[i];value=raw[field];converted[field]=value}}if(!converted[this._fieldId]){converted[this._fieldId]=raw.id}return converted};DataSet.prototype._updateItem=function(item){var id=item[this._fieldId];if(id==undefined){throw new Error(\"Cannot update item: item has no id (item: \"+(0,_stringify2[\"default\"])(item)+\")\")}var d=this._data[id];if(!d){throw new Error(\"Cannot update item: no item with id \"+id+\" found\")}var fields=(0,_keys2[\"default\"])(item);for(var i=0,len=fields.length;i<len;i++){var field=fields[i];var fieldType=this._type[field];d[field]=util.convert(item[field],fieldType)}return id};module.exports=DataSet},function(module,exports,__webpack_require__){\"use strict\";var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DataSet=__webpack_require__(11);function DataView(data,options){this._data=null;this._ids={};this.length=0;this._options=options||{};this._fieldId=\"id\";this._subscribers={};var me=this;this.listener=function(){me._onEvent.apply(me,arguments)};this.setData(data)}DataView.prototype.setData=function(data){var ids,id,i,len,items;if(this._data){if(this._data.off){this._data.off(\"*\",this.listener)}ids=this._data.getIds({filter:this._options&&this._options.filter});items=[];for(i=0,len=ids.length;i<len;i++){items.push(this._data._data[ids[i]])}this._ids={};this.length=0;this._trigger(\"remove\",{items:ids,oldData:items})}this._data=data;if(this._data){this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||\"id\";ids=this._data.getIds({filter:this._options&&this._options.filter});for(i=0,len=ids.length;i<len;i++){id=ids[i];this._ids[id]=true}this.length=ids.length;this._trigger(\"add\",{items:ids});if(this._data.on){this._data.on(\"*\",this.listener)}}};DataView.prototype.refresh=function(){var id,i,len;var ids=this._data.getIds({filter:this._options&&this._options.filter}),oldIds=(0,_keys2[\"default\"])(this._ids),newIds={},addedIds=[],removedIds=[],removedItems=[];for(i=0,len=ids.length;i<len;i++){id=ids[i];newIds[id]=true;if(!this._ids[id]){addedIds.push(id);this._ids[id]=true}}for(i=0,len=oldIds.length;i<len;i++){id=oldIds[i];if(!newIds[id]){removedIds.push(id);removedItems.push(this._data._data[id]);delete this._ids[id]}}this.length+=addedIds.length-removedIds.length;if(addedIds.length){this._trigger(\"add\",{items:addedIds})}if(removedIds.length){this._trigger(\"remove\",{items:removedIds,oldData:removedItems})}};DataView.prototype.get=function(args){var me=this;var ids,options,data;var firstType=util.getType(arguments[0]);if(firstType==\"String\"||firstType==\"Number\"||firstType==\"Array\"){ids=arguments[0];options=arguments[1];data=arguments[2]}else{options=arguments[0];data=arguments[1]}var viewOptions=util.extend({},this._options,options);if(this._options.filter&&options&&options.filter){viewOptions.filter=function(item){return me._options.filter(item)&&options.filter(item)}}var getArguments=[];if(ids!=undefined){getArguments.push(ids)}getArguments.push(viewOptions);getArguments.push(data);return this._data&&this._data.get.apply(this._data,getArguments)};DataView.prototype.getIds=function(options){var ids;if(this._data){var defaultFilter=this._options.filter;var filter;if(options&&options.filter){if(defaultFilter){filter=function filter(item){return defaultFilter(item)&&options.filter(item)}}else{filter=options.filter}}else{filter=defaultFilter}ids=this._data.getIds({filter:filter,order:options&&options.order})}else{ids=[]}return ids};DataView.prototype.map=function(callback,options){var mappedItems=[];if(this._data){var defaultFilter=this._options.filter;var filter;if(options&&options.filter){if(defaultFilter){filter=function filter(item){return defaultFilter(item)&&options.filter(item)}}else{filter=options.filter}}else{filter=defaultFilter}mappedItems=this._data.map(callback,{filter:filter,order:options&&options.order})}else{mappedItems=[]}return mappedItems};DataView.prototype.getDataSet=function(){var dataSet=this;while(dataSet instanceof DataView){dataSet=dataSet._data}return dataSet||null};DataView.prototype._onEvent=function(event,params,senderId){var i,len,id,item;var ids=params&¶ms.items;var addedIds=[],updatedIds=[],removedIds=[],oldItems=[],updatedItems=[],removedItems=[];if(ids&&this._data){switch(event){case\"add\":for(i=0,len=ids.length;i<len;i++){id=ids[i];item=this.get(id);if(item){this._ids[id]=true;addedIds.push(id)}}break;case\"update\":for(i=0,len=ids.length;i<len;i++){id=ids[i];item=this.get(id);if(item){if(this._ids[id]){updatedIds.push(id);updatedItems.push(params.data[i]);oldItems.push(params.oldData[i])}else{this._ids[id]=true;addedIds.push(id)}}else{if(this._ids[id]){delete this._ids[id];removedIds.push(id);removedItems.push(params.oldData[i])}else{}}}break;case\"remove\":for(i=0,len=ids.length;i<len;i++){id=ids[i];if(this._ids[id]){delete this._ids[id];removedIds.push(id);removedItems.push(params.oldData[i])}}break}this.length+=addedIds.length-removedIds.length;if(addedIds.length){this._trigger(\"add\",{items:addedIds},senderId)}if(updatedIds.length){this._trigger(\"update\",{items:updatedIds,oldData:oldItems,data:updatedItems},senderId)}if(removedIds.length){this._trigger(\"remove\",{items:removedIds,oldData:removedItems},senderId)}}};DataView.prototype.on=DataSet.prototype.on;DataView.prototype.off=DataSet.prototype.off;DataView.prototype._trigger=DataSet.prototype._trigger;DataView.prototype.subscribe=DataView.prototype.on;DataView.prototype.unsubscribe=DataView.prototype.off;module.exports=DataView},function(module,exports,__webpack_require__){var store=__webpack_require__(57)(\"wks\");var uid=__webpack_require__(40);var Symbol=__webpack_require__(18).Symbol;var USE_SYMBOL=typeof Symbol==\"function\";var $exports=module.exports=function(name){return store[name]||(store[name]=USE_SYMBOL&&Symbol[name]||(USE_SYMBOL?Symbol:uid)(\"Symbol.\"+name))};$exports.store=store},function(module,exports,__webpack_require__){\"use strict\";exports.prepareElements=function(JSONcontainer){for(var elementType in JSONcontainer){if(JSONcontainer.hasOwnProperty(elementType)){JSONcontainer[elementType].redundant=JSONcontainer[elementType].used;JSONcontainer[elementType].used=[]}}};exports.cleanupElements=function(JSONcontainer){for(var elementType in JSONcontainer){if(JSONcontainer.hasOwnProperty(elementType)){if(JSONcontainer[elementType].redundant){for(var i=0;i<JSONcontainer[elementType].redundant.length;i++){JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i])}JSONcontainer[elementType].redundant=[]}}}};exports.resetElements=function(JSONcontainer){exports.prepareElements(JSONcontainer);exports.cleanupElements(JSONcontainer);exports.prepareElements(JSONcontainer)};exports.getSVGElement=function(elementType,JSONcontainer,svgContainer){var element;if(JSONcontainer.hasOwnProperty(elementType)){if(JSONcontainer[elementType].redundant.length>0){element=JSONcontainer[elementType].redundant[0];JSONcontainer[elementType].redundant.shift()}else{element=document.createElementNS(\"http://www.w3.org/2000/svg\",elementType);svgContainer.appendChild(element)}}else{element=document.createElementNS(\"http://www.w3.org/2000/svg\",elementType);JSONcontainer[elementType]={used:[],redundant:[]};svgContainer.appendChild(element)}JSONcontainer[elementType].used.push(element);return element};exports.getDOMElement=function(elementType,JSONcontainer,DOMContainer,insertBefore){var element;if(JSONcontainer.hasOwnProperty(elementType)){if(JSONcontainer[elementType].redundant.length>0){element=JSONcontainer[elementType].redundant[0];JSONcontainer[elementType].redundant.shift()}else{element=document.createElement(elementType);if(insertBefore!==undefined){DOMContainer.insertBefore(element,insertBefore)}else{DOMContainer.appendChild(element)}}}else{element=document.createElement(elementType);JSONcontainer[elementType]={used:[],redundant:[]};if(insertBefore!==undefined){DOMContainer.insertBefore(element,insertBefore)}else{DOMContainer.appendChild(element)}}JSONcontainer[elementType].used.push(element);return element};exports.drawPoint=function(x,y,groupTemplate,JSONcontainer,svgContainer,labelObj){var point;if(groupTemplate.style==\"circle\"){point=exports.getSVGElement(\"circle\",JSONcontainer,svgContainer);point.setAttributeNS(null,\"cx\",x);point.setAttributeNS(null,\"cy\",y);point.setAttributeNS(null,\"r\",.5*groupTemplate.size)}else{point=exports.getSVGElement(\"rect\",JSONcontainer,svgContainer);point.setAttributeNS(null,\"x\",x-.5*groupTemplate.size);point.setAttributeNS(null,\"y\",y-.5*groupTemplate.size);point.setAttributeNS(null,\"width\",groupTemplate.size);point.setAttributeNS(null,\"height\",groupTemplate.size)}if(groupTemplate.styles!==undefined){point.setAttributeNS(null,\"style\",groupTemplate.styles)}point.setAttributeNS(null,\"class\",groupTemplate.className+\" vis-point\");if(labelObj){var label=exports.getSVGElement(\"text\",JSONcontainer,svgContainer);if(labelObj.xOffset){x=x+labelObj.xOffset}if(labelObj.yOffset){y=y+labelObj.yOffset}if(labelObj.content){label.textContent=labelObj.content}if(labelObj.className){label.setAttributeNS(null,\"class\",labelObj.className+\" vis-label\")}label.setAttributeNS(null,\"x\",x);label.setAttributeNS(null,\"y\",y)}return point};exports.drawBar=function(x,y,width,height,className,JSONcontainer,svgContainer,style){if(height!=0){if(height<0){height*=-1;y-=height}var rect=exports.getSVGElement(\"rect\",JSONcontainer,svgContainer);rect.setAttributeNS(null,\"x\",x-.5*width);rect.setAttributeNS(null,\"y\",y);rect.setAttributeNS(null,\"width\",width);rect.setAttributeNS(null,\"height\",height);rect.setAttributeNS(null,\"class\",className);if(style){rect.setAttributeNS(null,\"style\",style)}}}},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.printStyle=undefined;var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var errorFound=false;var allOptions=void 0;var printStyle=\"background: #FFeeee; color: #dd0000\";var Validator=function(){function Validator(){(0,_classCallCheck3[\"default\"])(this,Validator)}(0,_createClass3[\"default\"])(Validator,null,[{key:\"validate\",value:function validate(options,referenceOptions,subObject){errorFound=false;allOptions=referenceOptions;var usedOptions=referenceOptions;if(subObject!==undefined){usedOptions=referenceOptions[subObject]}Validator.parse(options,usedOptions,[]);return errorFound}},{key:\"parse\",value:function parse(options,referenceOptions,path){for(var option in options){if(options.hasOwnProperty(option)){Validator.check(option,options,referenceOptions,path)}}}},{key:\"check\",value:function check(option,options,referenceOptions,path){if(referenceOptions[option]===undefined&&referenceOptions.__any__===undefined){Validator.getSuggestion(option,referenceOptions,path);return}var referenceOption=option;var is_object=true;if(referenceOptions[option]===undefined&&referenceOptions.__any__!==undefined){referenceOption=\"__any__\";is_object=Validator.getType(options[option])===\"object\"}else{}var refOptionObj=referenceOptions[referenceOption];if(is_object&&refOptionObj.__type__!==undefined){refOptionObj=refOptionObj.__type__}Validator.checkFields(option,options,referenceOptions,referenceOption,refOptionObj,path)}},{key:\"checkFields\",value:function checkFields(option,options,referenceOptions,referenceOption,refOptionObj,path){var log=function log(message){console.log(\"%c\"+message+Validator.printLocation(path,option),printStyle)};var optionType=Validator.getType(options[option]);var refOptionType=refOptionObj[optionType];if(refOptionType!==undefined){if(Validator.getType(refOptionType)===\"array\"&&refOptionType.indexOf(options[option])===-1){log('Invalid option detected in \"'+option+'\".'+\" Allowed values are:\"+Validator.print(refOptionType)+' not \"'+options[option]+'\". ');errorFound=true}else if(optionType===\"object\"&&referenceOption!==\"__any__\"){path=util.copyAndExtendArray(path,option);Validator.parse(options[option],referenceOptions[referenceOption],path)}}else if(refOptionObj[\"any\"]===undefined){log('Invalid type received for \"'+option+'\". Expected: '+Validator.print((0,_keys2[\"default\"])(refOptionObj))+\". Received [\"+optionType+'] \"'+options[option]+'\"');errorFound=true}}},{key:\"getType\",value:function getType(object){var type=typeof object===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(object);if(type===\"object\"){if(object===null){return\"null\"}if(object instanceof Boolean){return\"boolean\"}if(object instanceof Number){return\"number\"}if(object instanceof String){return\"string\"}if(Array.isArray(object)){return\"array\"}if(object instanceof Date){return\"date\"}if(object.nodeType!==undefined){return\"dom\"}if(object._isAMomentObject===true){return\"moment\"}return\"object\"}else if(type===\"number\"){return\"number\"}else if(type===\"boolean\"){return\"boolean\"}else if(type===\"string\"){return\"string\"}else if(type===undefined){return\"undefined\"}return type}},{key:\"getSuggestion\",value:function getSuggestion(option,options,path){var localSearch=Validator.findInOptions(option,options,path,false);var globalSearch=Validator.findInOptions(option,allOptions,[],true);var localSearchThreshold=8;var globalSearchThreshold=4;var msg=void 0;if(localSearch.indexMatch!==undefined){msg=\" in \"+Validator.printLocation(localSearch.path,option,\"\")+'Perhaps it was incomplete? Did you mean: \"'+localSearch.indexMatch+'\"?\\n\\n'}else if(globalSearch.distance<=globalSearchThreshold&&localSearch.distance>globalSearch.distance){msg=\" in \"+Validator.printLocation(localSearch.path,option,\"\")+\"Perhaps it was misplaced? Matching option found at: \"+Validator.printLocation(globalSearch.path,globalSearch.closestMatch,\"\")}else if(localSearch.distance<=localSearchThreshold){msg='. Did you mean \"'+localSearch.closestMatch+'\"?'+Validator.printLocation(localSearch.path,option)}else{msg=\". Did you mean one of these: \"+Validator.print((0,_keys2[\"default\"])(options))+Validator.printLocation(path,option)}console.log('%cUnknown option detected: \"'+option+'\"'+msg,printStyle);errorFound=true}},{key:\"findInOptions\",value:function findInOptions(option,options,path){var recursive=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var min=1e9;var closestMatch=\"\";var closestMatchPath=[];var lowerCaseOption=option.toLowerCase();var indexMatch=undefined;for(var op in options){var distance=void 0;if(options[op].__type__!==undefined&&recursive===true){var result=Validator.findInOptions(option,options[op],util.copyAndExtendArray(path,op));if(min>result.distance){closestMatch=result.closestMatch;closestMatchPath=result.path;min=result.distance;indexMatch=result.indexMatch}}else{if(op.toLowerCase().indexOf(lowerCaseOption)!==-1){indexMatch=op}distance=Validator.levenshteinDistance(option,op);if(min>distance){closestMatch=op;closestMatchPath=util.copyArray(path);min=distance}}}return{closestMatch:closestMatch,path:closestMatchPath,distance:min,indexMatch:indexMatch}}},{key:\"printLocation\",value:function printLocation(path,option){var prefix=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"Problem value found at: \\n\";var str=\"\\n\\n\"+prefix+\"options = {\\n\";for(var i=0;i<path.length;i++){for(var j=0;j<i+1;j++){str+=\" \"}str+=path[i]+\": {\\n\"}for(var _j=0;_j<path.length+1;_j++){str+=\" \"}str+=option+\"\\n\";for(var _i=0;_i<path.length+1;_i++){for(var _j2=0;_j2<path.length-_i;_j2++){str+=\" \"}str+=\"}\\n\"}return str+\"\\n\\n\"}},{key:\"print\",value:function print(options){return(0,_stringify2[\"default\"])(options).replace(/(\\\")|(\\[)|(\\])|(,\"__type__\")/g,\"\").replace(/(\\,)/g,\", \")}},{key:\"levenshteinDistance\",value:function levenshteinDistance(a,b){if(a.length===0)return b.length;if(b.length===0)return a.length;var matrix=[];var i;for(i=0;i<=b.length;i++){matrix[i]=[i]}var j;for(j=0;j<=a.length;j++){matrix[0][j]=j}for(i=1;i<=b.length;i++){for(j=1;j<=a.length;j++){if(b.charAt(i-1)==a.charAt(j-1)){matrix[i][j]=matrix[i-1][j-1]}else{matrix[i][j]=Math.min(matrix[i-1][j-1]+1,Math.min(matrix[i][j-1]+1,matrix[i-1][j]+1))}}}return matrix[b.length][a.length]}}]);return Validator}();exports[\"default\"]=Validator;exports.printStyle=printStyle},function(module,exports,__webpack_require__){\"use strict\";var util=__webpack_require__(2);function Component(body,options){this.options=null;this.props=null}Component.prototype.setOptions=function(options){if(options){util.extend(this.options,options)}};Component.prototype.redraw=function(){return false};Component.prototype.destroy=function(){};Component.prototype._isResized=function(){var resized=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;this.props._previousWidth=this.props.width;this.props._previousHeight=this.props.height;return resized};module.exports=Component},function(module,exports,__webpack_require__){var global=__webpack_require__(18);var core=__webpack_require__(7);var ctx=__webpack_require__(80);var hide=__webpack_require__(26);var PROTOTYPE=\"prototype\";var $export=function(type,name,source){var IS_FORCED=type&$export.F;var IS_GLOBAL=type&$export.G;var IS_STATIC=type&$export.S;var IS_PROTO=type&$export.P;var IS_BIND=type&$export.B;var IS_WRAP=type&$export.W;var exports=IS_GLOBAL?core:core[name]||(core[name]={});var expProto=exports[PROTOTYPE];var target=IS_GLOBAL?global:IS_STATIC?global[name]:(global[name]||{})[PROTOTYPE];var key,own,out;if(IS_GLOBAL)source=name;for(key in source){own=!IS_FORCED&&target&&target[key]!==undefined;if(own&&key in exports)continue;out=own?target[key]:source[key];exports[key]=IS_GLOBAL&&typeof target[key]!=\"function\"?source[key]:IS_BIND&&own?ctx(out,global):IS_WRAP&&target[key]==out?function(C){var F=function(a,b,c){if(this instanceof C){switch(arguments.length){case 0:return new C;case 1:return new C(a);case 2:return new C(a,b)}return new C(a,b,c)}return C.apply(this,arguments)};F[PROTOTYPE]=C[PROTOTYPE];return F}(out):IS_PROTO&&typeof out==\"function\"?ctx(Function.call,out):out;if(IS_PROTO){(exports.virtual||(exports.virtual={}))[key]=out;if(type&$export.R&&expProto&&!expProto[key])hide(expProto,key,out)}}};$export.F=1;$export.G=2;$export.S=4;$export.P=8;$export.B=16;$export.W=32;$export.U=64;$export.R=128;module.exports=$export},function(module,exports){var global=module.exports=typeof window!=\"undefined\"&&window.Math==Math?window:typeof self!=\"undefined\"&&self.Math==Math?self:Function(\"return this\")();if(typeof __g==\"number\")__g=global},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(160),__esModule:true}},function(module,exports,__webpack_require__){var anObject=__webpack_require__(27);var IE8_DOM_DEFINE=__webpack_require__(81);var toPrimitive=__webpack_require__(53);var dP=Object.defineProperty;exports.f=__webpack_require__(21)?Object.defineProperty:function defineProperty(O,P,Attributes){anObject(O);P=toPrimitive(P,true);anObject(Attributes);if(IE8_DOM_DEFINE)try{return dP(O,P,Attributes)}catch(e){}if(\"get\"in Attributes||\"set\"in Attributes)throw TypeError(\"Accessors not supported!\");if(\"value\"in Attributes)O[P]=Attributes.value;return O}},function(module,exports,__webpack_require__){module.exports=!__webpack_require__(28)(function(){return Object.defineProperty({},\"a\",{get:function(){return 7}}).a!=7})},function(module,exports){var hasOwnProperty={}.hasOwnProperty;module.exports=function(it,key){return hasOwnProperty.call(it,key)}},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var NodeBase=function(){function NodeBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,NodeBase);this.body=body;this.labelModule=labelModule;this.setOptions(options);this.top=undefined;this.left=undefined;this.height=undefined;this.width=undefined;this.radius=undefined;this.margin=undefined;this.refreshNeeded=true;this.boundingBox={top:0,left:0,right:0,bottom:0}}(0,_createClass3[\"default\"])(NodeBase,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"_setMargins\",value:function _setMargins(labelModule){this.margin={};if(this.options.margin){if((0,_typeof3[\"default\"])(this.options.margin)==\"object\"){this.margin.top=this.options.margin.top;this.margin.right=this.options.margin.right;this.margin.bottom=this.options.margin.bottom;this.margin.left=this.options.margin.left}else{this.margin.top=this.options.margin;this.margin.right=this.options.margin;this.margin.bottom=this.options.margin;this.margin.left=this.options.margin}}labelModule.adjustSizes(this.margin)}},{key:\"_distanceToBorder\",value:function _distanceToBorder(ctx,angle){var borderWidth=this.options.borderWidth;this.resize(ctx);return Math.min(Math.abs(this.width/2/Math.cos(angle)),Math.abs(this.height/2/Math.sin(angle)))+borderWidth}},{key:\"enableShadow\",value:function enableShadow(ctx,values){if(values.shadow){ctx.shadowColor=values.shadowColor;ctx.shadowBlur=values.shadowSize;ctx.shadowOffsetX=values.shadowX;ctx.shadowOffsetY=values.shadowY}}},{key:\"disableShadow\",value:function disableShadow(ctx,values){if(values.shadow){ctx.shadowColor=\"rgba(0,0,0,0)\";ctx.shadowBlur=0;ctx.shadowOffsetX=0;ctx.shadowOffsetY=0}}},{key:\"enableBorderDashes\",value:function enableBorderDashes(ctx,values){if(values.borderDashes!==false){if(ctx.setLineDash!==undefined){var dashes=values.borderDashes;if(dashes===true){dashes=[5,15]}ctx.setLineDash(dashes)}else{console.warn(\"setLineDash is not supported in this browser. The dashed borders cannot be used.\");this.options.shapeProperties.borderDashes=false;values.borderDashes=false}}}},{key:\"disableBorderDashes\",value:function disableBorderDashes(ctx,values){if(values.borderDashes!==false){if(ctx.setLineDash!==undefined){ctx.setLineDash([0])}else{console.warn(\"setLineDash is not supported in this browser. The dashed borders cannot be used.\");this.options.shapeProperties.borderDashes=false;values.borderDashes=false}}}},{key:\"needsRefresh\",value:function needsRefresh(selected,hover){if(this.refreshNeeded===true){this.refreshNeeded=false;return true}return this.width===undefined||this.labelModule.differentState(selected,hover)}},{key:\"initContextForDraw\",value:function initContextForDraw(ctx,values){var borderWidth=values.borderWidth/this.body.view.scale;ctx.lineWidth=Math.min(this.width,borderWidth);ctx.strokeStyle=values.borderColor;ctx.fillStyle=values.color}},{key:\"performStroke\",value:function performStroke(ctx,values){var borderWidth=values.borderWidth/this.body.view.scale;ctx.save();if(borderWidth>0){this.enableBorderDashes(ctx,values);ctx.stroke();this.disableBorderDashes(ctx,values)}ctx.restore()}},{key:\"performFill\",value:function performFill(ctx,values){this.enableShadow(ctx,values);ctx.fill();this.disableShadow(ctx,values);this.performStroke(ctx,values)}},{key:\"_addBoundingBoxMargin\",value:function _addBoundingBoxMargin(margin){this.boundingBox.left-=margin;this.boundingBox.top-=margin;this.boundingBox.bottom+=margin;this.boundingBox.right+=margin}},{key:\"_updateBoundingBox\",value:function _updateBoundingBox(x,y,ctx,selected,hover){if(ctx!==undefined){this.resize(ctx,selected,hover)}this.left=x-this.width/2;this.top=y-this.height/2;this.boundingBox.left=this.left;this.boundingBox.top=this.top;this.boundingBox.bottom=this.top+this.height;this.boundingBox.right=this.left+this.width}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y,ctx,selected,hover){this._updateBoundingBox(x,y,ctx,selected,hover)}},{key:\"getDimensionsFromLabel\",value:function getDimensionsFromLabel(ctx,selected,hover){this.textSize=this.labelModule.getTextSize(ctx,selected,hover);var width=this.textSize.width;var height=this.textSize.height;var DEFAULT_SIZE=14;if(width===0){width=DEFAULT_SIZE;height=DEFAULT_SIZE}return{width:width,height:height}}}]);return NodeBase}();exports[\"default\"]=NodeBase},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2)\n;var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var ShapeBase=function(_NodeBase){(0,_inherits3[\"default\"])(ShapeBase,_NodeBase);function ShapeBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,ShapeBase);return(0,_possibleConstructorReturn3[\"default\"])(this,(ShapeBase.__proto__||(0,_getPrototypeOf2[\"default\"])(ShapeBase)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(ShapeBase,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;var values=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{size:this.options.size};if(this.needsRefresh(selected,hover)){this.labelModule.getTextSize(ctx,selected,hover);var size=2*values.size;this.width=size;this.height=size;this.radius=.5*this.width}}},{key:\"_drawShape\",value:function _drawShape(ctx,shape,sizeMultiplier,x,y,selected,hover,values){this.resize(ctx,selected,hover,values);this.left=x-this.width/2;this.top=y-this.height/2;this.initContextForDraw(ctx,values);ctx[shape](x,y,values.size);this.performFill(ctx,values);if(this.options.label!==undefined){this.labelModule.calculateLabelSize(ctx,selected,hover,x,y,\"hanging\");var yLabel=y+.5*this.height+.5*this.labelModule.size.height;this.labelModule.draw(ctx,x,yLabel,selected,hover,\"hanging\")}this.updateBoundingBox(x,y)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y){this.boundingBox.top=y-this.options.size;this.boundingBox.left=x-this.options.size;this.boundingBox.right=x+this.options.size;this.boundingBox.bottom=y+this.options.size;if(this.options.label!==undefined&&this.labelModule.size.width>0){this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left);this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width);this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height)}}}]);return ShapeBase}(_NodeBase3[\"default\"]);exports[\"default\"]=ShapeBase},function(module,exports,__webpack_require__){var IObject=__webpack_require__(78);var defined=__webpack_require__(51);module.exports=function(it){return IObject(defined(it))}},function(module,exports,__webpack_require__){var dP=__webpack_require__(20);var createDesc=__webpack_require__(39);module.exports=__webpack_require__(21)?function(object,key,value){return dP.f(object,key,createDesc(1,value))}:function(object,key,value){object[key]=value;return object}},function(module,exports,__webpack_require__){var isObject=__webpack_require__(32);module.exports=function(it){if(!isObject(it))throw TypeError(it+\" is not an object!\");return it}},function(module,exports){module.exports=function(exec){try{return!!exec()}catch(e){return true}}},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(138),__esModule:true}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _isIterable2=__webpack_require__(188);var _isIterable3=_interopRequireDefault(_isIterable2);var _getIterator2=__webpack_require__(77);var _getIterator3=_interopRequireDefault(_getIterator2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=(0,_getIterator3.default)(arr),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i[\"return\"])_i[\"return\"]()}finally{if(_d)throw _e}}return _arr}return function(arr,i){if(Array.isArray(arr)){return arr}else if((0,_isIterable3.default)(Object(arr))){return sliceIterator(arr,i)}else{throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}}()},function(module,exports){module.exports={}},function(module,exports){module.exports=function(it){return typeof it===\"object\"?it!==null:typeof it===\"function\"}},function(module,exports,__webpack_require__){var $keys=__webpack_require__(84);var enumBugKeys=__webpack_require__(58);module.exports=Object.keys||function keys(O){return $keys(O,enumBugKeys)}},function(module,exports,__webpack_require__){\"use strict\";function Point3d(x,y,z){this.x=x!==undefined?x:0;this.y=y!==undefined?y:0;this.z=z!==undefined?z:0}Point3d.subtract=function(a,b){var sub=new Point3d;sub.x=a.x-b.x;sub.y=a.y-b.y;sub.z=a.z-b.z;return sub};Point3d.add=function(a,b){var sum=new Point3d;sum.x=a.x+b.x;sum.y=a.y+b.y;sum.z=a.z+b.z;return sum};Point3d.avg=function(a,b){return new Point3d((a.x+b.x)/2,(a.y+b.y)/2,(a.z+b.z)/2)};Point3d.crossProduct=function(a,b){var crossproduct=new Point3d;crossproduct.x=a.y*b.z-a.z*b.y;crossproduct.y=a.z*b.x-a.x*b.z;crossproduct.z=a.x*b.y-a.y*b.x;return crossproduct};Point3d.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)};module.exports=Point3d},function(module,exports,__webpack_require__){\"use strict\";var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;(function(root,factory){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__=typeof __WEBPACK_AMD_DEFINE_FACTORY__===\"function\"?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else if(typeof exports===\"object\"){module.exports=factory()}else{root.keycharm=factory()}})(this,function(){function keycharm(options){var preventDefault=options&&options.preventDefault||false;var container=options&&options.container||window;var _exportFunctions={};var _bound={keydown:{},keyup:{}};var _keys={};var i;for(i=97;i<=122;i++){_keys[String.fromCharCode(i)]={code:65+(i-97),shift:false}}for(i=65;i<=90;i++){_keys[String.fromCharCode(i)]={code:i,shift:true}}for(i=0;i<=9;i++){_keys[\"\"+i]={code:48+i,shift:false}}for(i=1;i<=12;i++){_keys[\"F\"+i]={code:111+i,shift:false}}for(i=0;i<=9;i++){_keys[\"num\"+i]={code:96+i,shift:false}}_keys[\"num*\"]={code:106,shift:false};_keys[\"num+\"]={code:107,shift:false};_keys[\"num-\"]={code:109,shift:false};_keys[\"num/\"]={code:111,shift:false};_keys[\"num.\"]={code:110,shift:false};_keys[\"left\"]={code:37,shift:false};_keys[\"up\"]={code:38,shift:false};_keys[\"right\"]={code:39,shift:false};_keys[\"down\"]={code:40,shift:false};_keys[\"space\"]={code:32,shift:false};_keys[\"enter\"]={code:13,shift:false};_keys[\"shift\"]={code:16,shift:undefined};_keys[\"esc\"]={code:27,shift:false};_keys[\"backspace\"]={code:8,shift:false};_keys[\"tab\"]={code:9,shift:false};_keys[\"ctrl\"]={code:17,shift:false};_keys[\"alt\"]={code:18,shift:false};_keys[\"delete\"]={code:46,shift:false};_keys[\"pageup\"]={code:33,shift:false};_keys[\"pagedown\"]={code:34,shift:false};_keys[\"=\"]={code:187,shift:false};_keys[\"-\"]={code:189,shift:false};_keys[\"]\"]={code:221,shift:false};_keys[\"[\"]={code:219,shift:false};var down=function(event){handleEvent(event,\"keydown\")};var up=function(event){handleEvent(event,\"keyup\")};var handleEvent=function(event,type){if(_bound[type][event.keyCode]!==undefined){var bound=_bound[type][event.keyCode];for(var i=0;i<bound.length;i++){if(bound[i].shift===undefined){bound[i].fn(event)}else if(bound[i].shift==true&&event.shiftKey==true){bound[i].fn(event)}else if(bound[i].shift==false&&event.shiftKey==false){bound[i].fn(event)}}if(preventDefault==true){event.preventDefault()}}};_exportFunctions.bind=function(key,callback,type){if(type===undefined){type=\"keydown\"}if(_keys[key]===undefined){throw new Error(\"unsupported key: \"+key)}if(_bound[type][_keys[key].code]===undefined){_bound[type][_keys[key].code]=[]}_bound[type][_keys[key].code].push({fn:callback,shift:_keys[key].shift})};_exportFunctions.bindAll=function(callback,type){if(type===undefined){type=\"keydown\"}for(var key in _keys){if(_keys.hasOwnProperty(key)){_exportFunctions.bind(key,callback,type)}}};_exportFunctions.getKey=function(event){for(var key in _keys){if(_keys.hasOwnProperty(key)){if(event.shiftKey==true&&_keys[key].shift==true&&event.keyCode==_keys[key].code){return key}else if(event.shiftKey==false&&_keys[key].shift==false&&event.keyCode==_keys[key].code){return key}else if(event.keyCode==_keys[key].code&&key==\"shift\"){return key}}}return\"unknown key, currently not supported\"};_exportFunctions.unbind=function(key,callback,type){if(type===undefined){type=\"keydown\"}if(_keys[key]===undefined){throw new Error(\"unsupported key: \"+key)}if(callback!==undefined){var newBindings=[];var bound=_bound[type][_keys[key].code];if(bound!==undefined){for(var i=0;i<bound.length;i++){if(!(bound[i].fn==callback&&bound[i].shift==_keys[key].shift)){newBindings.push(_bound[type][_keys[key].code][i])}}}_bound[type][_keys[key].code]=newBindings}else{_bound[type][_keys[key].code]=[]}};_exportFunctions.reset=function(){_bound={keydown:{},keyup:{}}};_exportFunctions.destroy=function(){_bound={keydown:{},keyup:{}};container.removeEventListener(\"keydown\",down,true);container.removeEventListener(\"keyup\",up,true)};container.addEventListener(\"keydown\",down,true);container.addEventListener(\"keyup\",up,true);return _exportFunctions}return keycharm})},function(module,exports,__webpack_require__){\"use strict\";exports.convertHiddenOptions=function(moment,body,hiddenDates){if(hiddenDates&&!Array.isArray(hiddenDates)){return exports.convertHiddenOptions(moment,body,[hiddenDates])}body.hiddenDates=[];if(hiddenDates){if(Array.isArray(hiddenDates)==true){for(var i=0;i<hiddenDates.length;i++){if(hiddenDates[i].repeat===undefined){var dateItem={};dateItem.start=moment(hiddenDates[i].start).toDate().valueOf();dateItem.end=moment(hiddenDates[i].end).toDate().valueOf();body.hiddenDates.push(dateItem)}}body.hiddenDates.sort(function(a,b){return a.start-b.start})}}};exports.updateHiddenDates=function(moment,body,hiddenDates){if(hiddenDates&&!Array.isArray(hiddenDates)){return exports.updateHiddenDates(moment,body,[hiddenDates])}if(hiddenDates&&body.domProps.centerContainer.width!==undefined){exports.convertHiddenOptions(moment,body,hiddenDates);var start=moment(body.range.start);var end=moment(body.range.end);var totalRange=body.range.end-body.range.start;var pixelTime=totalRange/body.domProps.centerContainer.width;for(var i=0;i<hiddenDates.length;i++){if(hiddenDates[i].repeat!==undefined){var startDate=moment(hiddenDates[i].start);var endDate=moment(hiddenDates[i].end);if(startDate._d==\"Invalid Date\"){throw new Error(\"Supplied start date is not valid: \"+hiddenDates[i].start)}if(endDate._d==\"Invalid Date\"){throw new Error(\"Supplied end date is not valid: \"+hiddenDates[i].end)}var duration=endDate-startDate;if(duration>=4*pixelTime){var offset=0;var runUntil=end.clone();switch(hiddenDates[i].repeat){case\"daily\":if(startDate.day()!=endDate.day()){offset=1}startDate.dayOfYear(start.dayOfYear());startDate.year(start.year());startDate.subtract(7,\"days\");endDate.dayOfYear(start.dayOfYear());endDate.year(start.year());endDate.subtract(7-offset,\"days\");runUntil.add(1,\"weeks\");break;case\"weekly\":var dayOffset=endDate.diff(startDate,\"days\");var day=startDate.day();startDate.date(start.date());startDate.month(start.month());startDate.year(start.year());endDate=startDate.clone();startDate.day(day);endDate.day(day);endDate.add(dayOffset,\"days\");startDate.subtract(1,\"weeks\");endDate.subtract(1,\"weeks\");runUntil.add(1,\"weeks\");break;case\"monthly\":if(startDate.month()!=endDate.month()){offset=1}startDate.month(start.month());startDate.year(start.year());startDate.subtract(1,\"months\");endDate.month(start.month());endDate.year(start.year());endDate.subtract(1,\"months\");endDate.add(offset,\"months\");runUntil.add(1,\"months\");break;case\"yearly\":if(startDate.year()!=endDate.year()){offset=1}startDate.year(start.year());startDate.subtract(1,\"years\");endDate.year(start.year());endDate.subtract(1,\"years\");endDate.add(offset,\"years\");runUntil.add(1,\"years\");break;default:console.log(\"Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:\",hiddenDates[i].repeat);return}while(startDate<runUntil){body.hiddenDates.push({start:startDate.valueOf(),end:endDate.valueOf()});switch(hiddenDates[i].repeat){case\"daily\":startDate.add(1,\"days\");endDate.add(1,\"days\");break;case\"weekly\":startDate.add(1,\"weeks\");endDate.add(1,\"weeks\");break;case\"monthly\":startDate.add(1,\"months\");endDate.add(1,\"months\");break;case\"yearly\":startDate.add(1,\"y\");endDate.add(1,\"y\");break;default:console.log(\"Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:\",hiddenDates[i].repeat);return}}body.hiddenDates.push({start:startDate.valueOf(),end:endDate.valueOf()})}}}exports.removeDuplicates(body);var startHidden=exports.isHidden(body.range.start,body.hiddenDates);var endHidden=exports.isHidden(body.range.end,body.hiddenDates);var rangeStart=body.range.start;var rangeEnd=body.range.end;if(startHidden.hidden==true){rangeStart=body.range.startToFront==true?startHidden.startDate-1:startHidden.endDate+1}if(endHidden.hidden==true){rangeEnd=body.range.endToFront==true?endHidden.startDate-1:endHidden.endDate+1}if(startHidden.hidden==true||endHidden.hidden==true){body.range._applyRange(rangeStart,rangeEnd)}}};exports.removeDuplicates=function(body){var hiddenDates=body.hiddenDates;var safeDates=[];for(var i=0;i<hiddenDates.length;i++){for(var j=0;j<hiddenDates.length;j++){if(i!=j&&hiddenDates[j].remove!=true&&hiddenDates[i].remove!=true){if(hiddenDates[j].start>=hiddenDates[i].start&&hiddenDates[j].end<=hiddenDates[i].end){hiddenDates[j].remove=true}else if(hiddenDates[j].start>=hiddenDates[i].start&&hiddenDates[j].start<=hiddenDates[i].end){hiddenDates[i].end=hiddenDates[j].end;hiddenDates[j].remove=true}else if(hiddenDates[j].end>=hiddenDates[i].start&&hiddenDates[j].end<=hiddenDates[i].end){hiddenDates[i].start=hiddenDates[j].start;hiddenDates[j].remove=true}}}}for(i=0;i<hiddenDates.length;i++){if(hiddenDates[i].remove!==true){safeDates.push(hiddenDates[i])}}body.hiddenDates=safeDates;body.hiddenDates.sort(function(a,b){return a.start-b.start})};exports.printDates=function(dates){for(var i=0;i<dates.length;i++){console.log(i,new Date(dates[i].start),new Date(dates[i].end),dates[i].start,dates[i].end,dates[i].remove)}};exports.stepOverHiddenDates=function(moment,timeStep,previousTime){var stepInHidden=false;var currentValue=timeStep.current.valueOf();for(var i=0;i<timeStep.hiddenDates.length;i++){var startDate=timeStep.hiddenDates[i].start;var endDate=timeStep.hiddenDates[i].end;if(currentValue>=startDate&¤tValue<endDate){stepInHidden=true;break}}if(stepInHidden==true&¤tValue<timeStep._end.valueOf()&¤tValue!=previousTime){var prevValue=moment(previousTime);var newValue=moment(endDate);if(prevValue.year()!=newValue.year()){timeStep.switchedYear=true}else if(prevValue.month()!=newValue.month()){timeStep.switchedMonth=true}else if(prevValue.dayOfYear()!=newValue.dayOfYear()){timeStep.switchedDay=true}timeStep.current=newValue}};exports.toScreen=function(Core,time,width){var conversion;if(Core.body.hiddenDates.length==0){conversion=Core.range.conversion(width);return(time.valueOf()-conversion.offset)*conversion.scale}else{var hidden=exports.isHidden(time,Core.body.hiddenDates);if(hidden.hidden==true){time=hidden.startDate}var duration=exports.getHiddenDurationBetween(Core.body.hiddenDates,Core.range.start,Core.range.end);if(time<Core.range.start){conversion=Core.range.conversion(width,duration);var hiddenBeforeStart=exports.getHiddenDurationBeforeStart(Core.body.hiddenDates,time,conversion.offset);time=Core.options.moment(time).toDate().valueOf();time=time+hiddenBeforeStart;return-(conversion.offset-time.valueOf())*conversion.scale}else if(time>Core.range.end){var rangeAfterEnd={start:Core.range.start,end:time};time=exports.correctTimeForHidden(Core.options.moment,Core.body.hiddenDates,rangeAfterEnd,time);conversion=Core.range.conversion(width,duration);return(time.valueOf()-conversion.offset)*conversion.scale}else{time=exports.correctTimeForHidden(Core.options.moment,Core.body.hiddenDates,Core.range,time);conversion=Core.range.conversion(width,duration);return(time.valueOf()-conversion.offset)*conversion.scale}}};exports.toTime=function(Core,x,width){if(Core.body.hiddenDates.length==0){var conversion=Core.range.conversion(width);return new Date(x/conversion.scale+conversion.offset)}else{var hiddenDuration=exports.getHiddenDurationBetween(Core.body.hiddenDates,Core.range.start,Core.range.end);var totalDuration=Core.range.end-Core.range.start-hiddenDuration;var partialDuration=totalDuration*x/width;var accumulatedHiddenDuration=exports.getAccumulatedHiddenDuration(Core.body.hiddenDates,Core.range,partialDuration);return new Date(accumulatedHiddenDuration+partialDuration+Core.range.start)}};exports.getHiddenDurationBetween=function(hiddenDates,start,end){var duration=0;for(var i=0;i<hiddenDates.length;i++){var startDate=hiddenDates[i].start;var endDate=hiddenDates[i].end;if(startDate>=start&&endDate<end){duration+=endDate-startDate}}return duration};exports.getHiddenDurationBeforeStart=function(hiddenDates,start,end){var duration=0;for(var i=0;i<hiddenDates.length;i++){var startDate=hiddenDates[i].start;var endDate=hiddenDates[i].end;if(startDate>=start&&endDate<=end){duration+=endDate-startDate}}return duration};exports.correctTimeForHidden=function(moment,hiddenDates,range,time){time=moment(time).toDate().valueOf();time-=exports.getHiddenDurationBefore(moment,hiddenDates,range,time);return time};exports.getHiddenDurationBefore=function(moment,hiddenDates,range,time){var timeOffset=0;time=moment(time).toDate().valueOf();for(var i=0;i<hiddenDates.length;i++){var startDate=hiddenDates[i].start;var endDate=hiddenDates[i].end;if(startDate>=range.start&&endDate<range.end){if(time>=endDate){timeOffset+=endDate-startDate}}}return timeOffset};exports.getAccumulatedHiddenDuration=function(hiddenDates,range,requiredDuration){var hiddenDuration=0;var duration=0;var previousPoint=range.start;for(var i=0;i<hiddenDates.length;i++){var startDate=hiddenDates[i].start;var endDate=hiddenDates[i].end;if(startDate>=range.start&&endDate<range.end){duration+=startDate-previousPoint;previousPoint=endDate;if(duration>=requiredDuration){break}else{hiddenDuration+=endDate-startDate}}}return hiddenDuration};exports.snapAwayFromHidden=function(hiddenDates,time,direction,correctionEnabled){var isHidden=exports.isHidden(time,hiddenDates);if(isHidden.hidden==true){if(direction<0){if(correctionEnabled==true){return isHidden.startDate-(isHidden.endDate-time)-1}else{return isHidden.startDate-1}}else{if(correctionEnabled==true){return isHidden.endDate+(time-isHidden.startDate)+1}else{return isHidden.endDate+1}}}else{return time}};exports.isHidden=function(time,hiddenDates){for(var i=0;i<hiddenDates.length;i++){var startDate=hiddenDates[i].start;var endDate=hiddenDates[i].end;if(time>=startDate&&time<endDate){return{hidden:true,startDate:startDate,endDate:endDate}}}return{hidden:false,startDate:startDate,endDate:endDate}}},function(module,exports,__webpack_require__){\"use strict\";exports.onTouch=function(hammer,callback){callback.inputHandler=function(event){if(event.isFirst){callback(event)}};hammer.on(\"hammer.input\",callback.inputHandler)};exports.onRelease=function(hammer,callback){callback.inputHandler=function(event){if(event.isFinal){callback(event)}};return hammer.on(\"hammer.input\",callback.inputHandler)};exports.offTouch=function(hammer,callback){hammer.off(\"hammer.input\",callback.inputHandler)};exports.offRelease=exports.offTouch;exports.disablePreventDefaultVertically=function(pinchRecognizer){var TOUCH_ACTION_PAN_Y=\"pan-y\";pinchRecognizer.getTouchAction=function(){return[TOUCH_ACTION_PAN_Y]};return pinchRecognizer}},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hammer=__webpack_require__(10);var util=__webpack_require__(2);var moment=__webpack_require__(9);function Item(data,conversion,options){this.id=null;this.parent=null;this.data=data;this.dom=null;this.conversion=conversion||{};this.options=options||{};this.selected=false;this.displayed=false;this.groupShowing=true;this.dirty=true;this.top=null;this.right=null;this.left=null;this.width=null;this.height=null;this.editable=null;this._updateEditStatus()}Item.prototype.stack=true;Item.prototype.select=function(){this.selected=true;this.dirty=true;if(this.displayed)this.redraw()};Item.prototype.unselect=function(){this.selected=false;this.dirty=true;if(this.displayed)this.redraw()};Item.prototype.setData=function(data){var groupChanged=data.group!=undefined&&this.data.group!=data.group;if(groupChanged&&this.parent!=null){this.parent.itemSet._moveToGroup(this,data.group)}if(this.parent){this.parent.stackDirty=true}var subGroupChanged=data.subgroup!=undefined&&this.data.subgroup!=data.subgroup;if(subGroupChanged&&this.parent!=null){this.parent.changeSubgroup(this,this.data.subgroup,data.subgroup)}this.data=data;this._updateEditStatus();this.dirty=true;if(this.displayed)this.redraw()};Item.prototype.setParent=function(parent){if(this.displayed){this.hide();this.parent=parent;if(this.parent){this.show()}}else{this.parent=parent}};Item.prototype.isVisible=function(range){return false};Item.prototype.show=function(){return false};Item.prototype.hide=function(){return false};Item.prototype.redraw=function(){};Item.prototype.repositionX=function(){};Item.prototype.repositionY=function(){};Item.prototype._repaintDragCenter=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragCenter){var me=this;var dragCenter=document.createElement(\"div\");dragCenter.className=\"vis-drag-center\";dragCenter.dragCenterItem=this;var hammer=new Hammer(dragCenter);hammer.on(\"tap\",function(event){me.parent.itemSet.body.emitter.emit(\"click\",{event:event,item:me.id})});hammer.on(\"doubletap\",function(event){event.stopPropagation();me.parent.itemSet._onUpdateItem(me);me.parent.itemSet.body.emitter.emit(\"doubleClick\",{event:event,item:me.id})});if(this.dom.box){if(this.dom.dragLeft){this.dom.box.insertBefore(dragCenter,this.dom.dragLeft)}else{this.dom.box.appendChild(dragCenter)}}else if(this.dom.point){this.dom.point.appendChild(dragCenter)}this.dom.dragCenter=dragCenter}else if(!this.selected&&this.dom.dragCenter){if(this.dom.dragCenter.parentNode){this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter)}this.dom.dragCenter=null}};Item.prototype._repaintDeleteButton=function(anchor){var editable=(this.options.editable.overrideItems||this.editable==null)&&this.options.editable.remove||!this.options.editable.overrideItems&&this.editable!=null&&this.editable.remove;if(this.selected&&editable&&!this.dom.deleteButton){var me=this;var deleteButton=document.createElement(\"div\");if(this.options.rtl){deleteButton.className=\"vis-delete-rtl\"}else{deleteButton.className=\"vis-delete\"}deleteButton.title=\"Delete this item\";new Hammer(deleteButton).on(\"tap\",function(event){event.stopPropagation();me.parent.removeFromDataSet(me)});anchor.appendChild(deleteButton);this.dom.deleteButton=deleteButton}else if(!this.selected&&this.dom.deleteButton){if(this.dom.deleteButton.parentNode){this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton)}this.dom.deleteButton=null}};Item.prototype._repaintOnItemUpdateTimeTooltip=function(anchor){if(!this.options.tooltipOnItemUpdateTime)return;var editable=(this.options.editable.updateTime||this.data.editable===true)&&this.data.editable!==false;if(this.selected&&editable&&!this.dom.onItemUpdateTimeTooltip){var onItemUpdateTimeTooltip=document.createElement(\"div\");onItemUpdateTimeTooltip.className=\"vis-onUpdateTime-tooltip\";anchor.appendChild(onItemUpdateTimeTooltip);this.dom.onItemUpdateTimeTooltip=onItemUpdateTimeTooltip}else if(!this.selected&&this.dom.onItemUpdateTimeTooltip){if(this.dom.onItemUpdateTimeTooltip.parentNode){this.dom.onItemUpdateTimeTooltip.parentNode.removeChild(this.dom.onItemUpdateTimeTooltip)}this.dom.onItemUpdateTimeTooltip=null}if(this.dom.onItemUpdateTimeTooltip){this.dom.onItemUpdateTimeTooltip.style.visibility=this.parent.itemSet.touchParams.itemIsDragging?\"visible\":\"hidden\";if(this.options.rtl){this.dom.onItemUpdateTimeTooltip.style.right=this.dom.content.style.right}else{this.dom.onItemUpdateTimeTooltip.style.left=this.dom.content.style.left}var tooltipOffset=50;var scrollTop=this.parent.itemSet.body.domProps.scrollTop;var itemDistanceFromTop;if(this.options.orientation.item==\"top\"){itemDistanceFromTop=this.top}else{itemDistanceFromTop=this.parent.height-this.top-this.height}var isCloseToTop=itemDistanceFromTop+this.parent.top-tooltipOffset<-scrollTop;if(isCloseToTop){this.dom.onItemUpdateTimeTooltip.style.bottom=\"\";this.dom.onItemUpdateTimeTooltip.style.top=this.height+2+\"px\"}else{this.dom.onItemUpdateTimeTooltip.style.top=\"\";this.dom.onItemUpdateTimeTooltip.style.bottom=this.height+2+\"px\"}var content;var templateFunction;if(this.options.tooltipOnItemUpdateTime&&this.options.tooltipOnItemUpdateTime.template){templateFunction=this.options.tooltipOnItemUpdateTime.template.bind(this);content=templateFunction(this.data)}else{content=\"start: \"+moment(this.data.start).format(\"MM/DD/YYYY hh:mm\");if(this.data.end){content+=\"<br> end: \"+moment(this.data.end).format(\"MM/DD/YYYY hh:mm\")}}this.dom.onItemUpdateTimeTooltip.innerHTML=content}};Item.prototype._updateContents=function(element){var content;var changed;var templateFunction;var itemVisibleFrameContent;var visibleFrameTemplateFunction;var itemData=this.parent.itemSet.itemsData.get(this.id);var frameElement=this.dom.box||this.dom.point;var itemVisibleFrameContentElement=frameElement.getElementsByClassName(\"vis-item-visible-frame\")[0];if(this.options.visibleFrameTemplate){visibleFrameTemplateFunction=this.options.visibleFrameTemplate.bind(this);itemVisibleFrameContent=visibleFrameTemplateFunction(itemData,frameElement)}else{itemVisibleFrameContent=\"\"}if(itemVisibleFrameContentElement){if(itemVisibleFrameContent instanceof Object&&!(itemVisibleFrameContent instanceof Element)){visibleFrameTemplateFunction(itemData,itemVisibleFrameContentElement)}else{changed=this._contentToString(this.itemVisibleFrameContent)!==this._contentToString(itemVisibleFrameContent);if(changed){if(itemVisibleFrameContent instanceof Element){itemVisibleFrameContentElement.innerHTML=\"\";itemVisibleFrameContentElement.appendChild(itemVisibleFrameContent)}else if(itemVisibleFrameContent!=undefined){itemVisibleFrameContentElement.innerHTML=itemVisibleFrameContent}else{if(!(this.data.type==\"background\"&&this.data.content===undefined)){throw new Error('Property \"content\" missing in item '+this.id)}}this.itemVisibleFrameContent=itemVisibleFrameContent}}}if(this.options.template){templateFunction=this.options.template.bind(this);content=templateFunction(itemData,element,this.data)}else{content=this.data.content}if(content instanceof Object&&!(content instanceof Element)){templateFunction(itemData,element)}else{changed=this._contentToString(this.content)!==this._contentToString(content);if(changed){if(content instanceof Element){element.innerHTML=\"\";element.appendChild(content)}else if(content!=undefined){element.innerHTML=content}else{if(!(this.data.type==\"background\"&&this.data.content===undefined)){throw new Error('Property \"content\" missing in item '+this.id)}}this.content=content}}};Item.prototype._updateDataAttributes=function(element){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var attributes=[];if(Array.isArray(this.options.dataAttributes)){attributes=this.options.dataAttributes}else if(this.options.dataAttributes==\"all\"){attributes=(0,_keys2[\"default\"])(this.data)}else{return}for(var i=0;i<attributes.length;i++){var name=attributes[i];var value=this.data[name];if(value!=null){element.setAttribute(\"data-\"+name,value)}else{element.removeAttribute(\"data-\"+name)}}}};Item.prototype._updateStyle=function(element){if(this.style){util.removeCssText(element,this.style);this.style=null}if(this.data.style){util.addCssText(element,this.data.style);this.style=this.data.style}};Item.prototype._contentToString=function(content){if(typeof content===\"string\")return content;if(content&&\"outerHTML\"in content)return content.outerHTML;return content};Item.prototype._updateEditStatus=function(){if(this.options){if(typeof this.options.editable===\"boolean\"){this.editable={updateTime:this.options.editable,updateGroup:this.options.editable,remove:this.options.editable}}else if((0,_typeof3[\"default\"])(this.options.editable)===\"object\"){this.editable={};util.selectiveExtend([\"updateTime\",\"updateGroup\",\"remove\"],this.editable,this.options.editable)}}if(!this.options||!this.options.editable||this.options.editable.overrideItems!==true){if(this.data){if(typeof this.data.editable===\"boolean\"){this.editable={updateTime:this.data.editable,updateGroup:this.data.editable,remove:this.data.editable}}else if((0,_typeof3[\"default\"])(this.data.editable)===\"object\"){this.editable={};util.selectiveExtend([\"updateTime\",\"updateGroup\",\"remove\"],this.editable,this.data.editable)}}}};Item.prototype.getWidthLeft=function(){return 0};Item.prototype.getWidthRight=function(){return 0};Item.prototype.getTitle=function(){return this.data.title};module.exports=Item},function(module,exports){module.exports=function(bitmap,value){return{enumerable:!(bitmap&1),configurable:!(bitmap&2),writable:!(bitmap&4),value:value}}},function(module,exports){var id=0;var px=Math.random();module.exports=function(key){return\"Symbol(\".concat(key===undefined?\"\":key,\")_\",(++id+px).toString(36))}},function(module,exports,__webpack_require__){var defined=__webpack_require__(51);module.exports=function(it){return Object(defined(it))}},function(module,exports){exports.f={}.propertyIsEnumerable},function(module,exports,__webpack_require__){\"use strict\";function Queue(options){this.delay=null;this.max=Infinity;this._queue=[];this._timeout=null;this._extended=null;this.setOptions(options)}Queue.prototype.setOptions=function(options){if(options&&typeof options.delay!==\"undefined\"){this.delay=options.delay}if(options&&typeof options.max!==\"undefined\"){this.max=options.max}this._flushIfNeeded()};Queue.extend=function(object,options){var queue=new Queue(options);if(object.flush!==undefined){throw new Error(\"Target object already has a property flush\")}object.flush=function(){queue.flush()};var methods=[{name:\"flush\",original:undefined}];if(options&&options.replace){for(var i=0;i<options.replace.length;i++){var name=options.replace[i];methods.push({name:name,original:object[name]});queue.replace(object,name)}}queue._extended={object:object,methods:methods};return queue};Queue.prototype.destroy=function(){this.flush();if(this._extended){var object=this._extended.object;var methods=this._extended.methods;for(var i=0;i<methods.length;i++){var method=methods[i];if(method.original){object[method.name]=method.original}else{delete object[method.name]}}this._extended=null}};Queue.prototype.replace=function(object,method){var me=this;var original=object[method];if(!original){throw new Error(\"Method \"+method+\" undefined\")}object[method]=function(){var args=[];for(var i=0;i<arguments.length;i++){args[i]=arguments[i]}me.queue({args:args,fn:original,context:this})}};Queue.prototype.queue=function(entry){if(typeof entry===\"function\"){this._queue.push({fn:entry})}else{this._queue.push(entry)}this._flushIfNeeded()};Queue.prototype._flushIfNeeded=function(){\nif(this._queue.length>this.max){this.flush()}clearTimeout(this._timeout);if(this.queue.length>0&&typeof this.delay===\"number\"){var me=this;this._timeout=setTimeout(function(){me.flush()},this.delay)}};Queue.prototype.flush=function(){while(this._queue.length>0){var entry=this._queue.shift();entry.fn.apply(entry.context||entry.fn,entry.args||[])}};module.exports=Queue},function(module,exports){module.exports=Emitter;function Emitter(obj){if(obj)return mixin(obj)}function mixin(obj){for(var key in Emitter.prototype){obj[key]=Emitter.prototype[key]}return obj}Emitter.prototype.on=Emitter.prototype.addEventListener=function(event,fn){this._callbacks=this._callbacks||{};(this._callbacks[event]=this._callbacks[event]||[]).push(fn);return this};Emitter.prototype.once=function(event,fn){var self=this;this._callbacks=this._callbacks||{};function on(){self.off(event,on);fn.apply(this,arguments)}on.fn=fn;this.on(event,on);return this};Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(event,fn){this._callbacks=this._callbacks||{};if(0==arguments.length){this._callbacks={};return this}var callbacks=this._callbacks[event];if(!callbacks)return this;if(1==arguments.length){delete this._callbacks[event];return this}var cb;for(var i=0;i<callbacks.length;i++){cb=callbacks[i];if(cb===fn||cb.fn===fn){callbacks.splice(i,1);break}}return this};Emitter.prototype.emit=function(event){this._callbacks=this._callbacks||{};var args=[].slice.call(arguments,1),callbacks=this._callbacks[event];if(callbacks){callbacks=callbacks.slice(0);for(var i=0,len=callbacks.length;i<len;++i){callbacks[i].apply(this,args)}}return this};Emitter.prototype.listeners=function(event){this._callbacks=this._callbacks||{};return this._callbacks[event]||[]};Emitter.prototype.hasListeners=function(event){return!!this.listeners(event).length}},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Component=__webpack_require__(16);var TimeStep=__webpack_require__(66);var DateUtil=__webpack_require__(36);var moment=__webpack_require__(9);function TimeAxis(body,options){this.dom={foreground:null,lines:[],majorTexts:[],minorTexts:[],redundant:{lines:[],majorTexts:[],minorTexts:[]}};this.props={range:{start:0,end:0,minimumStep:0},lineTop:0};this.defaultOptions={orientation:{axis:\"bottom\"},showMinorLabels:true,showMajorLabels:true,maxMinorChars:7,format:TimeStep.FORMAT,moment:moment,timeAxis:null};this.options=util.extend({},this.defaultOptions);this.body=body;this._create();this.setOptions(options)}TimeAxis.prototype=new Component;TimeAxis.prototype.setOptions=function(options){if(options){util.selectiveExtend([\"showMinorLabels\",\"showMajorLabels\",\"maxMinorChars\",\"hiddenDates\",\"timeAxis\",\"moment\",\"rtl\"],this.options,options);util.selectiveDeepExtend([\"format\"],this.options,options);if(\"orientation\"in options){if(typeof options.orientation===\"string\"){this.options.orientation.axis=options.orientation}else if((0,_typeof3[\"default\"])(options.orientation)===\"object\"&&\"axis\"in options.orientation){this.options.orientation.axis=options.orientation.axis}}if(\"locale\"in options){if(typeof moment.locale===\"function\"){moment.locale(options.locale)}else{moment.lang(options.locale)}}}};TimeAxis.prototype._create=function(){this.dom.foreground=document.createElement(\"div\");this.dom.background=document.createElement(\"div\");this.dom.foreground.className=\"vis-time-axis vis-foreground\";this.dom.background.className=\"vis-time-axis vis-background\"};TimeAxis.prototype.destroy=function(){if(this.dom.foreground.parentNode){this.dom.foreground.parentNode.removeChild(this.dom.foreground)}if(this.dom.background.parentNode){this.dom.background.parentNode.removeChild(this.dom.background)}this.body=null};TimeAxis.prototype.redraw=function(){var props=this.props;var foreground=this.dom.foreground;var background=this.dom.background;var parent=this.options.orientation.axis==\"top\"?this.body.dom.top:this.body.dom.bottom;var parentChanged=foreground.parentNode!==parent;this._calculateCharSize();var showMinorLabels=this.options.showMinorLabels&&this.options.orientation.axis!==\"none\";var showMajorLabels=this.options.showMajorLabels&&this.options.orientation.axis!==\"none\";props.minorLabelHeight=showMinorLabels?props.minorCharHeight:0;props.majorLabelHeight=showMajorLabels?props.majorCharHeight:0;props.height=props.minorLabelHeight+props.majorLabelHeight;props.width=foreground.offsetWidth;props.minorLineHeight=this.body.domProps.root.height-props.majorLabelHeight-(this.options.orientation.axis==\"top\"?this.body.domProps.bottom.height:this.body.domProps.top.height);props.minorLineWidth=1;props.majorLineHeight=props.minorLineHeight+props.majorLabelHeight;props.majorLineWidth=1;var foregroundNextSibling=foreground.nextSibling;var backgroundNextSibling=background.nextSibling;foreground.parentNode&&foreground.parentNode.removeChild(foreground);background.parentNode&&background.parentNode.removeChild(background);foreground.style.height=this.props.height+\"px\";this._repaintLabels();if(foregroundNextSibling){parent.insertBefore(foreground,foregroundNextSibling)}else{parent.appendChild(foreground)}if(backgroundNextSibling){this.body.dom.backgroundVertical.insertBefore(background,backgroundNextSibling)}else{this.body.dom.backgroundVertical.appendChild(background)}return this._isResized()||parentChanged};TimeAxis.prototype._repaintLabels=function(){var orientation=this.options.orientation.axis;var start=util.convert(this.body.range.start,\"Number\");var end=util.convert(this.body.range.end,\"Number\");var timeLabelsize=this.body.util.toTime((this.props.minorCharWidth||10)*this.options.maxMinorChars).valueOf();var minimumStep=timeLabelsize-DateUtil.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this.body.range,timeLabelsize);minimumStep-=this.body.util.toTime(0).valueOf();var step=new TimeStep(new Date(start),new Date(end),minimumStep,this.body.hiddenDates,this.options);step.setMoment(this.options.moment);if(this.options.format){step.setFormat(this.options.format)}if(this.options.timeAxis){step.setScale(this.options.timeAxis)}this.step=step;var dom=this.dom;dom.redundant.lines=dom.lines;dom.redundant.majorTexts=dom.majorTexts;dom.redundant.minorTexts=dom.minorTexts;dom.lines=[];dom.majorTexts=[];dom.minorTexts=[];var current;var next;var x;var xNext;var isMajor;var nextIsMajor;var showMinorGrid;var width=0,prevWidth;var line;var labelMinor;var xFirstMajorLabel=undefined;var count=0;var MAX=1e3;var className;step.start();next=step.getCurrent();xNext=this.body.util.toScreen(next);while(step.hasNext()&&count<MAX){count++;isMajor=step.isMajor();className=step.getClassName();labelMinor=step.getLabelMinor();current=next;x=xNext;step.next();next=step.getCurrent();nextIsMajor=step.isMajor();xNext=this.body.util.toScreen(next);prevWidth=width;width=xNext-x;switch(step.scale){case\"week\":showMinorGrid=true;break;default:showMinorGrid=width>=prevWidth*.4;break}if(this.options.showMinorLabels&&showMinorGrid){var label=this._repaintMinorText(x,labelMinor,orientation,className);label.style.width=width+\"px\"}if(isMajor&&this.options.showMajorLabels){if(x>0){if(xFirstMajorLabel==undefined){xFirstMajorLabel=x}label=this._repaintMajorText(x,step.getLabelMajor(),orientation,className)}line=this._repaintMajorLine(x,width,orientation,className)}else{if(showMinorGrid){line=this._repaintMinorLine(x,width,orientation,className)}else{if(line){line.style.width=parseInt(line.style.width)+width+\"px\"}}}}if(count===MAX&&!warnedForOverflow){console.warn(\"Something is wrong with the Timeline scale. Limited drawing of grid lines to \"+MAX+\" lines.\");warnedForOverflow=true}if(this.options.showMajorLabels){var leftTime=this.body.util.toTime(0),leftText=step.getLabelMajor(leftTime),widthText=leftText.length*(this.props.majorCharWidth||10)+10;if(xFirstMajorLabel==undefined||widthText<xFirstMajorLabel){this._repaintMajorText(0,leftText,orientation,className)}}util.forEach(this.dom.redundant,function(arr){while(arr.length){var elem=arr.pop();if(elem&&elem.parentNode){elem.parentNode.removeChild(elem)}}})};TimeAxis.prototype._repaintMinorText=function(x,text,orientation,className){var label=this.dom.redundant.minorTexts.shift();if(!label){var content=document.createTextNode(\"\");label=document.createElement(\"div\");label.appendChild(content);this.dom.foreground.appendChild(label)}this.dom.minorTexts.push(label);label.innerHTML=text;label.style.top=orientation==\"top\"?this.props.majorLabelHeight+\"px\":\"0\";if(this.options.rtl){label.style.left=\"\";label.style.right=x+\"px\"}else{label.style.left=x+\"px\"}label.className=\"vis-text vis-minor \"+className;return label};TimeAxis.prototype._repaintMajorText=function(x,text,orientation,className){var label=this.dom.redundant.majorTexts.shift();if(!label){var content=document.createElement(\"div\");label=document.createElement(\"div\");label.appendChild(content);this.dom.foreground.appendChild(label)}label.childNodes[0].innerHTML=text;label.className=\"vis-text vis-major \"+className;label.style.top=orientation==\"top\"?\"0\":this.props.minorLabelHeight+\"px\";if(this.options.rtl){label.style.left=\"\";label.style.right=x+\"px\"}else{label.style.left=x+\"px\"}this.dom.majorTexts.push(label);return label};TimeAxis.prototype._repaintMinorLine=function(x,width,orientation,className){var line=this.dom.redundant.lines.shift();if(!line){line=document.createElement(\"div\");this.dom.background.appendChild(line)}this.dom.lines.push(line);var props=this.props;if(orientation==\"top\"){line.style.top=props.majorLabelHeight+\"px\"}else{line.style.top=this.body.domProps.top.height+\"px\"}line.style.height=props.minorLineHeight+\"px\";if(this.options.rtl){line.style.left=\"\";line.style.right=x-props.minorLineWidth/2+\"px\";line.className=\"vis-grid vis-vertical-rtl vis-minor \"+className}else{line.style.left=x-props.minorLineWidth/2+\"px\";line.className=\"vis-grid vis-vertical vis-minor \"+className}line.style.width=width+\"px\";return line};TimeAxis.prototype._repaintMajorLine=function(x,width,orientation,className){var line=this.dom.redundant.lines.shift();if(!line){line=document.createElement(\"div\");this.dom.background.appendChild(line)}this.dom.lines.push(line);var props=this.props;if(orientation==\"top\"){line.style.top=\"0\"}else{line.style.top=this.body.domProps.top.height+\"px\"}if(this.options.rtl){line.style.left=\"\";line.style.right=x-props.majorLineWidth/2+\"px\";line.className=\"vis-grid vis-vertical-rtl vis-major \"+className}else{line.style.left=x-props.majorLineWidth/2+\"px\";line.className=\"vis-grid vis-vertical vis-major \"+className}line.style.height=props.majorLineHeight+\"px\";line.style.width=width+\"px\";return line};TimeAxis.prototype._calculateCharSize=function(){if(!this.dom.measureCharMinor){this.dom.measureCharMinor=document.createElement(\"DIV\");this.dom.measureCharMinor.className=\"vis-text vis-minor vis-measure\";this.dom.measureCharMinor.style.position=\"absolute\";this.dom.measureCharMinor.appendChild(document.createTextNode(\"0\"));this.dom.foreground.appendChild(this.dom.measureCharMinor)}this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight;this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth;if(!this.dom.measureCharMajor){this.dom.measureCharMajor=document.createElement(\"DIV\");this.dom.measureCharMajor.className=\"vis-text vis-major vis-measure\";this.dom.measureCharMajor.style.position=\"absolute\";this.dom.measureCharMajor.appendChild(document.createTextNode(\"0\"));this.dom.foreground.appendChild(this.dom.measureCharMajor)}this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight;this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth};var warnedForOverflow=false;module.exports=TimeAxis},function(module,exports,__webpack_require__){\"use strict\";var Hammer=__webpack_require__(10);var util=__webpack_require__(2);var Component=__webpack_require__(16);var moment=__webpack_require__(9);var locales=__webpack_require__(98);function CustomTime(body,options){this.body=body;this.defaultOptions={moment:moment,locales:locales,locale:\"en\",id:undefined,title:undefined};this.options=util.extend({},this.defaultOptions);if(options&&options.time){this.customTime=options.time}else{this.customTime=new Date}this.eventParams={};this.setOptions(options);this._create()}CustomTime.prototype=new Component;CustomTime.prototype.setOptions=function(options){if(options){util.selectiveExtend([\"moment\",\"locale\",\"locales\",\"id\"],this.options,options)}};CustomTime.prototype._create=function(){var bar=document.createElement(\"div\");bar[\"custom-time\"]=this;bar.className=\"vis-custom-time \"+(this.options.id||\"\");bar.style.position=\"absolute\";bar.style.top=\"0px\";bar.style.height=\"100%\";this.bar=bar;var drag=document.createElement(\"div\");drag.style.position=\"relative\";drag.style.top=\"0px\";drag.style.left=\"-10px\";drag.style.height=\"100%\";drag.style.width=\"20px\";function onMouseWheel(e){this.body.range._onMouseWheel(e)}if(drag.addEventListener){drag.addEventListener(\"mousewheel\",onMouseWheel.bind(this),false);drag.addEventListener(\"DOMMouseScroll\",onMouseWheel.bind(this),false)}else{drag.attachEvent(\"onmousewheel\",onMouseWheel.bind(this))}bar.appendChild(drag);this.hammer=new Hammer(drag);this.hammer.on(\"panstart\",this._onDragStart.bind(this));this.hammer.on(\"panmove\",this._onDrag.bind(this));this.hammer.on(\"panend\",this._onDragEnd.bind(this));this.hammer.get(\"pan\").set({threshold:5,direction:Hammer.DIRECTION_HORIZONTAL})};CustomTime.prototype.destroy=function(){this.hide();this.hammer.destroy();this.hammer=null;this.body=null};CustomTime.prototype.redraw=function(){var parent=this.body.dom.backgroundVertical;if(this.bar.parentNode!=parent){if(this.bar.parentNode){this.bar.parentNode.removeChild(this.bar)}parent.appendChild(this.bar)}var x=this.body.util.toScreen(this.customTime);var locale=this.options.locales[this.options.locale];if(!locale){if(!this.warned){console.log(\"WARNING: options.locales['\"+this.options.locale+\"'] not found. See http://visjs.org/docs/timeline/#Localization\");this.warned=true}locale=this.options.locales[\"en\"]}var title=this.options.title;if(title===undefined){title=locale.time+\": \"+this.options.moment(this.customTime).format(\"dddd, MMMM Do YYYY, H:mm:ss\");title=title.charAt(0).toUpperCase()+title.substring(1)}else if(typeof title===\"function\"){title=title.call(this.customTime)}this.bar.style.left=x+\"px\";this.bar.title=title;return false};CustomTime.prototype.hide=function(){if(this.bar.parentNode){this.bar.parentNode.removeChild(this.bar)}};CustomTime.prototype.setCustomTime=function(time){this.customTime=util.convert(time,\"Date\");this.redraw()};CustomTime.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())};CustomTime.prototype.setCustomTitle=function(title){this.options.title=title};CustomTime.prototype._onDragStart=function(event){this.eventParams.dragging=true;this.eventParams.customTime=this.customTime;event.stopPropagation()};CustomTime.prototype._onDrag=function(event){if(!this.eventParams.dragging)return;var x=this.body.util.toScreen(this.eventParams.customTime)+event.deltaX;var time=this.body.util.toTime(x);this.setCustomTime(time);this.body.emitter.emit(\"timechange\",{id:this.options.id,time:new Date(this.customTime.valueOf()),event:event});event.stopPropagation()};CustomTime.prototype._onDragEnd=function(event){if(!this.eventParams.dragging)return;this.body.emitter.emit(\"timechanged\",{id:this.options.id,time:new Date(this.customTime.valueOf()),event:event});event.stopPropagation()};CustomTime.customTimeFromTarget=function(event){var target=event.target;while(target){if(target.hasOwnProperty(\"custom-time\")){return target[\"custom-time\"]}target=target.parentNode}return null};module.exports=CustomTime},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Label=__webpack_require__(117)[\"default\"];var ComponentUtil=__webpack_require__(48)[\"default\"];var Box=__webpack_require__(193)[\"default\"];var Circle=__webpack_require__(200)[\"default\"];var CircularImage=__webpack_require__(201)[\"default\"];var Database=__webpack_require__(202)[\"default\"];var Diamond=__webpack_require__(203)[\"default\"];var Dot=__webpack_require__(204)[\"default\"];var Ellipse=__webpack_require__(205)[\"default\"];var Icon=__webpack_require__(206)[\"default\"];var Image=__webpack_require__(207)[\"default\"];var Square=__webpack_require__(208)[\"default\"];var Hexagon=__webpack_require__(209)[\"default\"];var Star=__webpack_require__(210)[\"default\"];var Text=__webpack_require__(211)[\"default\"];var Triangle=__webpack_require__(212)[\"default\"];var TriangleDown=__webpack_require__(213)[\"default\"];var _require=__webpack_require__(15),printStyle=_require.printStyle;var Node=function(){function Node(options,body,imagelist,grouplist,globalOptions,defaultOptions){(0,_classCallCheck3[\"default\"])(this,Node);this.options=util.bridgeObject(globalOptions);this.globalOptions=globalOptions;this.defaultOptions=defaultOptions;this.body=body;this.edges=[];this.id=undefined;this.imagelist=imagelist;this.grouplist=grouplist;this.x=undefined;this.y=undefined;this.baseSize=this.options.size;this.baseFontSize=this.options.font.size;this.predefinedPosition=false;this.selected=false;this.hover=false;this.labelModule=new Label(this.body,this.options,false);this.setOptions(options)}(0,_createClass3[\"default\"])(Node,[{key:\"attachEdge\",value:function attachEdge(edge){if(this.edges.indexOf(edge)===-1){this.edges.push(edge)}}},{key:\"detachEdge\",value:function detachEdge(edge){var index=this.edges.indexOf(edge);if(index!=-1){this.edges.splice(index,1)}}},{key:\"setOptions\",value:function setOptions(options){var currentShape=this.options.shape;if(!options){return}if(options.id!==undefined){this.id=options.id}if(this.id===undefined){throw new Error(\"Node must have an id\")}Node.checkMass(options,this.id);if(options.x!==undefined){if(options.x===null){this.x=undefined;this.predefinedPosition=false}else{this.x=parseInt(options.x);this.predefinedPosition=true}}if(options.y!==undefined){if(options.y===null){this.y=undefined;this.predefinedPosition=false}else{this.y=parseInt(options.y);this.predefinedPosition=true}}if(options.size!==undefined){this.baseSize=options.size}if(options.value!==undefined){options.value=parseFloat(options.value)}Node.parseOptions(this.options,options,true,this.globalOptions,this.grouplist);var pile=[options,this.options,this.defaultOptions];this.chooser=ComponentUtil.choosify(\"node\",pile);this._load_images();this.updateLabelModule(options);this.updateShape(currentShape);return options.hidden!==undefined||options.physics!==undefined}},{key:\"_load_images\",value:function _load_images(){if(this.options.shape!==\"circularImage\"&&this.options.shape!==\"image\"){return}if(this.options.image===undefined){throw new Error(\"Option image must be defined for node type '\"+this.options.shape+\"'\")}if(this.imagelist===undefined){throw new Error(\"Internal Error: No images provided\")}if(typeof this.options.image===\"string\"){this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage,this.id)}else{if(this.options.image.unselected===undefined){throw new Error(\"No unselected image provided\")}this.imageObj=this.imagelist.load(this.options.image.unselected,this.options.brokenImage,this.id);if(this.options.image.selected!==undefined){this.imageObjAlt=this.imagelist.load(this.options.image.selected,this.options.brokenImage,this.id)}else{this.imageObjAlt=undefined}}}},{key:\"getFormattingValues\",value:function getFormattingValues(){var values={color:this.options.color.background,borderWidth:this.options.borderWidth,borderColor:this.options.color.border,size:this.options.size,borderDashes:this.options.shapeProperties.borderDashes,borderRadius:this.options.shapeProperties.borderRadius,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y};if(this.selected||this.hover){if(this.chooser===true){if(this.selected){values.borderWidth*=2;values.color=this.options.color.highlight.background;values.borderColor=this.options.color.highlight.border;values.shadow=this.options.shadow.enabled}else if(this.hover){values.color=this.options.color.hover.background;values.borderColor=this.options.color.hover.border;values.shadow=this.options.shadow.enabled}}else if(typeof this.chooser===\"function\"){this.chooser(values,this.options.id,this.selected,this.hover);if(values.shadow===false){if(values.shadowColor!==this.options.shadow.color||values.shadowSize!==this.options.shadow.size||values.shadowX!==this.options.shadow.x||values.shadowY!==this.options.shadow.y){values.shadow=true}}}}else{values.shadow=this.options.shadow.enabled}return values}},{key:\"updateLabelModule\",value:function updateLabelModule(options){if(this.options.label===undefined||this.options.label===null){this.options.label=\"\"}Node.updateGroupOptions(this.options,options,this.grouplist);var currentGroup=this.grouplist.get(this.options.group,false);var pile=[options,this.options,currentGroup,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,pile);if(this.labelModule.baseSize!==undefined){this.baseFontSize=this.labelModule.baseSize}}},{key:\"updateShape\",value:function updateShape(currentShape){if(currentShape===this.options.shape&&this.shape){this.shape.setOptions(this.options,this.imageObj,this.imageObjAlt)}else{switch(this.options.shape){case\"box\":this.shape=new Box(this.options,this.body,this.labelModule);break;case\"circle\":this.shape=new Circle(this.options,this.body,this.labelModule);break;case\"circularImage\":this.shape=new CircularImage(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case\"database\":this.shape=new Database(this.options,this.body,this.labelModule);break;case\"diamond\":this.shape=new Diamond(this.options,this.body,this.labelModule);break;case\"dot\":this.shape=new Dot(this.options,this.body,this.labelModule);break;case\"ellipse\":this.shape=new Ellipse(this.options,this.body,this.labelModule);break;case\"icon\":this.shape=new Icon(this.options,this.body,this.labelModule);break;case\"image\":this.shape=new Image(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case\"square\":this.shape=new Square(this.options,this.body,this.labelModule);break;case\"hexagon\":this.shape=new Hexagon(this.options,this.body,this.labelModule);break;case\"star\":this.shape=new Star(this.options,this.body,this.labelModule);break;case\"text\":this.shape=new Text(this.options,this.body,this.labelModule);break;case\"triangle\":this.shape=new Triangle(this.options,this.body,this.labelModule);break;case\"triangleDown\":this.shape=new TriangleDown(this.options,this.body,this.labelModule);break;default:this.shape=new Ellipse(this.options,this.body,this.labelModule);break}}this.needsRefresh()}},{key:\"select\",value:function select(){this.selected=true;this.needsRefresh()}},{key:\"unselect\",value:function unselect(){this.selected=false;this.needsRefresh()}},{key:\"needsRefresh\",value:function needsRefresh(){this.shape.refreshNeeded=true}},{key:\"getTitle\",value:function getTitle(){return this.options.title}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this.shape.distanceToBorder(ctx,angle)}},{key:\"isFixed\",value:function isFixed(){return this.options.fixed.x&&this.options.fixed.y}},{key:\"isSelected\",value:function isSelected(){return this.selected}},{key:\"getValue\",value:function getValue(){return this.options.value}},{key:\"getLabelSize\",value:function getLabelSize(){return this.labelModule.size()}},{key:\"setValueRange\",value:function setValueRange(min,max,total){if(this.options.value!==undefined){var scale=this.options.scaling.customScalingFunction(min,max,total,this.options.value);var sizeDiff=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===true){var fontDiff=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+scale*fontDiff}this.options.size=this.options.scaling.min+scale*sizeDiff}else{this.options.size=this.baseSize;this.options.font.size=this.baseFontSize}this.updateLabelModule()}},{key:\"draw\",value:function draw(ctx){var values=this.getFormattingValues();this.shape.draw(ctx,this.x,this.y,this.selected,this.hover,values)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(ctx){this.shape.updateBoundingBox(this.x,this.y,ctx)}},{key:\"resize\",value:function resize(ctx){var values=this.getFormattingValues();this.shape.resize(ctx,this.selected,this.hover,values)}},{key:\"getItemsOnPoint\",value:function getItemsOnPoint(point){var ret=[];if(this.labelModule.visible()){if(ComponentUtil.pointInRect(this.labelModule.getSize(),point)){ret.push({nodeId:this.id,labelId:0})}}if(ComponentUtil.pointInRect(this.shape.boundingBox,point)){ret.push({nodeId:this.id})}return ret}},{key:\"isOverlappingWith\",value:function isOverlappingWith(obj){return this.shape.left<obj.right&&this.shape.left+this.shape.width>obj.left&&this.shape.top<obj.bottom&&this.shape.top+this.shape.height>obj.top}},{key:\"isBoundingBoxOverlappingWith\",value:function isBoundingBoxOverlappingWith(obj){return this.shape.boundingBox.left<obj.right&&this.shape.boundingBox.right>obj.left&&this.shape.boundingBox.top<obj.bottom&&this.shape.boundingBox.bottom>obj.top}}],[{key:\"updateGroupOptions\",value:function updateGroupOptions(parentOptions,newOptions,groupList){if(groupList===undefined)return;var group=parentOptions.group;if(newOptions!==undefined&&newOptions.group!==undefined&&group!==newOptions.group){throw new Error(\"updateGroupOptions: group values in options don't match.\")}var hasGroup=typeof group===\"number\"||typeof group===\"string\"&&group!=\"\";if(!hasGroup)return;var groupObj=groupList.get(group);util.selectiveNotDeepExtend([\"font\"],parentOptions,groupObj);parentOptions.color=util.parseColor(parentOptions.color)}},{key:\"parseOptions\",value:function parseOptions(parentOptions,newOptions){var allowDeletion=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var globalOptions=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var groupList=arguments[4];var fields=[\"color\",\"fixed\",\"shadow\"];util.selectiveNotDeepExtend(fields,parentOptions,newOptions,allowDeletion);Node.checkMass(newOptions);util.mergeOptions(parentOptions,newOptions,\"shadow\",globalOptions);if(newOptions.color!==undefined&&newOptions.color!==null){var parsedColor=util.parseColor(newOptions.color);util.fillIfDefined(parentOptions.color,parsedColor)}else if(allowDeletion===true&&newOptions.color===null){parentOptions.color=util.bridgeObject(globalOptions.color)}if(newOptions.fixed!==undefined&&newOptions.fixed!==null){if(typeof newOptions.fixed===\"boolean\"){parentOptions.fixed.x=newOptions.fixed;parentOptions.fixed.y=newOptions.fixed}else{if(newOptions.fixed.x!==undefined&&typeof newOptions.fixed.x===\"boolean\"){parentOptions.fixed.x=newOptions.fixed.x}if(newOptions.fixed.y!==undefined&&typeof newOptions.fixed.y===\"boolean\"){parentOptions.fixed.y=newOptions.fixed.y}}}if(allowDeletion===true&&newOptions.font===null){parentOptions.font=util.bridgeObject(globalOptions.font)}Node.updateGroupOptions(parentOptions,newOptions,groupList);if(newOptions.scaling!==undefined){util.mergeOptions(parentOptions.scaling,newOptions.scaling,\"label\",globalOptions.scaling)}}},{key:\"checkMass\",value:function checkMass(options,id){if(options.mass!==undefined&&options.mass<=0){var strId=\"\";if(id!==undefined){strId=\" in node id: \"+id}console.log(\"%cNegative or zero mass disallowed\"+strId+\", setting mass to 1.\",printStyle);options.mass=1}}}]);return Node}();exports[\"default\"]=Node},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var ComponentUtil=function(){function ComponentUtil(){(0,_classCallCheck3[\"default\"])(this,ComponentUtil)}(0,_createClass3[\"default\"])(ComponentUtil,null,[{key:\"choosify\",value:function choosify(subOption,pile){var allowed=[\"node\",\"edge\",\"label\"];var value=true;var chosen=util.topMost(pile,\"chosen\");if(typeof chosen===\"boolean\"){value=chosen}else if((typeof chosen===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(chosen))===\"object\"){if(allowed.indexOf(subOption)===-1){throw new Error(\"choosify: subOption '\"+subOption+\"' should be one of \"+\"'\"+allowed.join(\"', '\")+\"'\")}var chosenEdge=util.topMost(pile,[\"chosen\",subOption]);if(typeof chosenEdge===\"boolean\"||typeof chosenEdge===\"function\"){value=chosenEdge}}return value}},{key:\"pointInRect\",value:function pointInRect(rect,point,rotationPoint){if(rect.width<=0||rect.height<=0){return false}if(rotationPoint!==undefined){var tmp={x:point.x-rotationPoint.x,y:point.y-rotationPoint.y};if(rotationPoint.angle!==0){var angle=-rotationPoint.angle;var tmp2={x:Math.cos(angle)*tmp.x-Math.sin(angle)*tmp.y,y:Math.sin(angle)*tmp.x+Math.cos(angle)*tmp.y};point=tmp2}else{point=tmp}}var right=rect.x+rect.width;var bottom=rect.y+rect.width;return rect.left<point.x&&right>point.x&&rect.top<point.y&&bottom>point.y}},{key:\"isValidLabel\",value:function isValidLabel(text){return typeof text===\"string\"&&text!==\"\"}}]);return ComponentUtil}();exports[\"default\"]=ComponentUtil},function(module,exports,__webpack_require__){__webpack_require__(125);var global=__webpack_require__(18);var hide=__webpack_require__(26);var Iterators=__webpack_require__(31);var TO_STRING_TAG=__webpack_require__(13)(\"toStringTag\");var DOMIterables=(\"CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,\"+\"DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,\"+\"MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,\"+\"SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,\"+\"TextTrackList,TouchList\").split(\",\");for(var i=0;i<DOMIterables.length;i++){var NAME=DOMIterables[i];var Collection=global[NAME];var proto=Collection&&Collection.prototype;if(proto&&!proto[TO_STRING_TAG])hide(proto,TO_STRING_TAG,NAME);Iterators[NAME]=Iterators.Array}},function(module,exports){var toString={}.toString;module.exports=function(it){return toString.call(it).slice(8,-1)}},function(module,exports){module.exports=function(it){if(it==undefined)throw TypeError(\"Can't call method on \"+it);return it}},function(module,exports){module.exports=true},function(module,exports,__webpack_require__){var isObject=__webpack_require__(32);module.exports=function(it,S){if(!isObject(it))return it;var fn,val;if(S&&typeof(fn=it.toString)==\"function\"&&!isObject(val=fn.call(it)))return val;if(typeof(fn=it.valueOf)==\"function\"&&!isObject(val=fn.call(it)))return val;if(!S&&typeof(fn=it.toString)==\"function\"&&!isObject(val=fn.call(it)))return val;throw TypeError(\"Can't convert object to primitive value\")}},function(module,exports,__webpack_require__){var anObject=__webpack_require__(27);var dPs=__webpack_require__(130);var enumBugKeys=__webpack_require__(58);var IE_PROTO=__webpack_require__(56)(\"IE_PROTO\")\n;var Empty=function(){};var PROTOTYPE=\"prototype\";var createDict=function(){var iframe=__webpack_require__(82)(\"iframe\");var i=enumBugKeys.length;var lt=\"<\";var gt=\">\";var iframeDocument;iframe.style.display=\"none\";__webpack_require__(134).appendChild(iframe);iframe.src=\"javascript:\";iframeDocument=iframe.contentWindow.document;iframeDocument.open();iframeDocument.write(lt+\"script\"+gt+\"document.F=Object\"+lt+\"/script\"+gt);iframeDocument.close();createDict=iframeDocument.F;while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];return createDict()};module.exports=Object.create||function create(O,Properties){var result;if(O!==null){Empty[PROTOTYPE]=anObject(O);result=new Empty;Empty[PROTOTYPE]=null;result[IE_PROTO]=O}else result=createDict();return Properties===undefined?result:dPs(result,Properties)}},function(module,exports){var ceil=Math.ceil;var floor=Math.floor;module.exports=function(it){return isNaN(it=+it)?0:(it>0?floor:ceil)(it)}},function(module,exports,__webpack_require__){var shared=__webpack_require__(57)(\"keys\");var uid=__webpack_require__(40);module.exports=function(key){return shared[key]||(shared[key]=uid(key))}},function(module,exports,__webpack_require__){var global=__webpack_require__(18);var SHARED=\"__core-js_shared__\";var store=global[SHARED]||(global[SHARED]={});module.exports=function(key){return store[key]||(store[key]={})}},function(module,exports){module.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(module,exports,__webpack_require__){var def=__webpack_require__(20).f;var has=__webpack_require__(22);var TAG=__webpack_require__(13)(\"toStringTag\");module.exports=function(it,tag,stat){if(it&&!has(it=stat?it:it.prototype,TAG))def(it,TAG,{configurable:true,value:tag})}},function(module,exports,__webpack_require__){\"use strict\";var $at=__webpack_require__(135)(true);__webpack_require__(79)(String,\"String\",function(iterated){this._t=String(iterated);this._i=0},function(){var O=this._t;var index=this._i;var point;if(index>=O.length)return{value:undefined,done:true};point=$at(O,index);this._i+=point.length;return{value:point,done:false}})},function(module,exports,__webpack_require__){exports.f=__webpack_require__(13)},function(module,exports,__webpack_require__){var global=__webpack_require__(18);var core=__webpack_require__(7);var LIBRARY=__webpack_require__(52);var wksExt=__webpack_require__(61);var defineProperty=__webpack_require__(20).f;module.exports=function(name){var $Symbol=core.Symbol||(core.Symbol=LIBRARY?{}:global.Symbol||{});if(name.charAt(0)!=\"_\"&&!(name in $Symbol))defineProperty($Symbol,name,{value:wksExt.f(name)})}},function(module,exports){exports.f=Object.getOwnPropertySymbols},function(module,exports,__webpack_require__){\"use strict\";var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var moment=__webpack_require__(9);var Component=__webpack_require__(16);var DateUtil=__webpack_require__(36);function Range(body,options){var now=moment().hours(0).minutes(0).seconds(0).milliseconds(0);var start=now.clone().add(-3,\"days\").valueOf();var end=now.clone().add(3,\"days\").valueOf();this.millisecondsPerPixelCache=undefined;if(options===undefined){this.start=start;this.end=end}else{this.start=options.start||start;this.end=options.end||end}this.rolling=false;this.body=body;this.deltaDifference=0;this.scaleOffset=0;this.startToFront=false;this.endToFront=true;this.defaultOptions={rtl:false,start:null,end:null,moment:moment,direction:\"horizontal\",moveable:true,zoomable:true,min:null,max:null,zoomMin:10,zoomMax:1e3*60*60*24*365*1e4,rollingMode:{follow:false,offset:.5}};this.options=util.extend({},this.defaultOptions);this.props={touch:{}};this.animationTimer=null;this.body.emitter.on(\"panstart\",this._onDragStart.bind(this));this.body.emitter.on(\"panmove\",this._onDrag.bind(this));this.body.emitter.on(\"panend\",this._onDragEnd.bind(this));this.body.emitter.on(\"mousewheel\",this._onMouseWheel.bind(this));this.body.emitter.on(\"touch\",this._onTouch.bind(this));this.body.emitter.on(\"pinch\",this._onPinch.bind(this));this.body.dom.rollingModeBtn.addEventListener(\"click\",this.startRolling.bind(this));this.setOptions(options)}Range.prototype=new Component;Range.prototype.setOptions=function(options){if(options){var fields=[\"animation\",\"direction\",\"min\",\"max\",\"zoomMin\",\"zoomMax\",\"moveable\",\"zoomable\",\"moment\",\"activate\",\"hiddenDates\",\"zoomKey\",\"rtl\",\"showCurrentTime\",\"rollingMode\",\"horizontalScroll\"];util.selectiveExtend(fields,this.options,options);if(options.rollingMode&&options.rollingMode.follow){this.startRolling()}if(\"start\"in options||\"end\"in options){this.setRange(options.start,options.end)}}};function validateDirection(direction){if(direction!=\"horizontal\"&&direction!=\"vertical\"){throw new TypeError('Unknown direction \"'+direction+'\". '+'Choose \"horizontal\" or \"vertical\".')}}Range.prototype.startRolling=function(){var me=this;function update(){me.stopRolling();me.rolling=true;var interval=me.end-me.start;var t=util.convert(new Date,\"Date\").valueOf();var start=t-interval*me.options.rollingMode.offset;var end=t+interval*(1-me.options.rollingMode.offset);var options={animation:false};me.setRange(start,end,options);var scale=me.conversion(me.body.domProps.center.width).scale;interval=1/scale/10;if(interval<30)interval=30;if(interval>1e3)interval=1e3;me.body.dom.rollingModeBtn.style.visibility=\"hidden\";me.currentTimeTimer=setTimeout(update,interval)}update()};Range.prototype.stopRolling=function(){if(this.currentTimeTimer!==undefined){clearTimeout(this.currentTimeTimer);this.rolling=false;this.body.dom.rollingModeBtn.style.visibility=\"visible\"}};Range.prototype.setRange=function(start,end,options,callback,frameCallback){if(!options){options={}}if(options.byUser!==true){options.byUser=false}var me=this;var finalStart=start!=undefined?util.convert(start,\"Date\").valueOf():null;var finalEnd=end!=undefined?util.convert(end,\"Date\").valueOf():null;this._cancelAnimation();this.millisecondsPerPixelCache=undefined;if(options.animation){var initStart=this.start;var initEnd=this.end;var duration=(0,_typeof3[\"default\"])(options.animation)===\"object\"&&\"duration\"in options.animation?options.animation.duration:500;var easingName=(0,_typeof3[\"default\"])(options.animation)===\"object\"&&\"easingFunction\"in options.animation?options.animation.easingFunction:\"easeInOutQuad\";var easingFunction=util.easingFunctions[easingName];if(!easingFunction){throw new Error(\"Unknown easing function \"+(0,_stringify2[\"default\"])(easingName)+\". \"+\"Choose from: \"+(0,_keys2[\"default\"])(util.easingFunctions).join(\", \"))}var initTime=(new Date).valueOf();var anyChanged=false;var next=function next(){if(!me.props.touch.dragging){var now=(new Date).valueOf();var time=now-initTime;var ease=easingFunction(time/duration);var done=time>duration;var s=done||finalStart===null?finalStart:initStart+(finalStart-initStart)*ease;var e=done||finalEnd===null?finalEnd:initEnd+(finalEnd-initEnd)*ease;changed=me._applyRange(s,e);DateUtil.updateHiddenDates(me.options.moment,me.body,me.options.hiddenDates);anyChanged=anyChanged||changed;var params={start:new Date(me.start),end:new Date(me.end),byUser:options.byUser,event:options.event};if(frameCallback){frameCallback(ease,changed,done)}if(changed){me.body.emitter.emit(\"rangechange\",params)}if(done){if(anyChanged){me.body.emitter.emit(\"rangechanged\",params);if(callback){return callback()}}}else{me.animationTimer=setTimeout(next,20)}}};return next()}else{var changed=this._applyRange(finalStart,finalEnd);DateUtil.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates);if(changed){var params={start:new Date(this.start),end:new Date(this.end),byUser:options.byUser,event:options.event};this.body.emitter.emit(\"rangechange\",params);clearTimeout(me.timeoutID);me.timeoutID=setTimeout(function(){me.body.emitter.emit(\"rangechanged\",params)},200);if(callback){return callback()}}}};Range.prototype.getMillisecondsPerPixel=function(){if(this.millisecondsPerPixelCache===undefined){this.millisecondsPerPixelCache=(this.end-this.start)/this.body.dom.center.clientWidth}return this.millisecondsPerPixelCache};Range.prototype._cancelAnimation=function(){if(this.animationTimer){clearTimeout(this.animationTimer);this.animationTimer=null}};Range.prototype._applyRange=function(start,end){var newStart=start!=null?util.convert(start,\"Date\").valueOf():this.start,newEnd=end!=null?util.convert(end,\"Date\").valueOf():this.end,max=this.options.max!=null?util.convert(this.options.max,\"Date\").valueOf():null,min=this.options.min!=null?util.convert(this.options.min,\"Date\").valueOf():null,diff;if(isNaN(newStart)||newStart===null){throw new Error('Invalid start \"'+start+'\"')}if(isNaN(newEnd)||newEnd===null){throw new Error('Invalid end \"'+end+'\"')}if(newEnd<newStart){newEnd=newStart}if(min!==null){if(newStart<min){diff=min-newStart;newStart+=diff;newEnd+=diff;if(max!=null){if(newEnd>max){newEnd=max}}}}if(max!==null){if(newEnd>max){diff=newEnd-max;newStart-=diff;newEnd-=diff;if(min!=null){if(newStart<min){newStart=min}}}}if(this.options.zoomMin!==null){var zoomMin=parseFloat(this.options.zoomMin);if(zoomMin<0){zoomMin=0}if(newEnd-newStart<zoomMin){var compensation=.5;if(this.end-this.start===zoomMin&&newStart>=this.start-compensation&&newEnd<=this.end){newStart=this.start;newEnd=this.end}else{diff=zoomMin-(newEnd-newStart);newStart-=diff/2;newEnd+=diff/2}}}if(this.options.zoomMax!==null){var zoomMax=parseFloat(this.options.zoomMax);if(zoomMax<0){zoomMax=0}if(newEnd-newStart>zoomMax){if(this.end-this.start===zoomMax&&newStart<this.start&&newEnd>this.end){newStart=this.start;newEnd=this.end}else{diff=newEnd-newStart-zoomMax;newStart+=diff/2;newEnd-=diff/2}}}var changed=this.start!=newStart||this.end!=newEnd;if(!(newStart>=this.start&&newStart<=this.end||newEnd>=this.start&&newEnd<=this.end)&&!(this.start>=newStart&&this.start<=newEnd||this.end>=newStart&&this.end<=newEnd)){this.body.emitter.emit(\"checkRangedItems\")}this.start=newStart;this.end=newEnd;return changed};Range.prototype.getRange=function(){return{start:this.start,end:this.end}};Range.prototype.conversion=function(width,totalHidden){return Range.conversion(this.start,this.end,width,totalHidden)};Range.conversion=function(start,end,width,totalHidden){if(totalHidden===undefined){totalHidden=0}if(width!=0&&end-start!=0){return{offset:start,scale:width/(end-start-totalHidden)}}else{return{offset:0,scale:1}}};Range.prototype._onDragStart=function(event){this.deltaDifference=0;this.previousDelta=0;if(!this.options.moveable)return;if(!this._isInsideRange(event))return;if(!this.props.touch.allowDragging)return;this.stopRolling();this.props.touch.start=this.start;this.props.touch.end=this.end;this.props.touch.dragging=true;if(this.body.dom.root){this.body.dom.root.style.cursor=\"move\"}};Range.prototype._onDrag=function(event){if(!event)return;if(!this.props.touch.dragging)return;if(!this.options.moveable)return;if(!this.props.touch.allowDragging)return;var direction=this.options.direction;validateDirection(direction);var delta=direction==\"horizontal\"?event.deltaX:event.deltaY;delta-=this.deltaDifference;var interval=this.props.touch.end-this.props.touch.start;var duration=DateUtil.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);interval-=duration;var width=direction==\"horizontal\"?this.body.domProps.center.width:this.body.domProps.center.height;var diffRange;if(this.options.rtl){diffRange=delta/width*interval}else{diffRange=-delta/width*interval}var newStart=this.props.touch.start+diffRange;var newEnd=this.props.touch.end+diffRange;var safeStart=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newStart,this.previousDelta-delta,true);var safeEnd=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newEnd,this.previousDelta-delta,true);if(safeStart!=newStart||safeEnd!=newEnd){this.deltaDifference+=delta;this.props.touch.start=safeStart;this.props.touch.end=safeEnd;this._onDrag(event);return}this.previousDelta=delta;this._applyRange(newStart,newEnd);var startDate=new Date(this.start);var endDate=new Date(this.end);this.body.emitter.emit(\"rangechange\",{start:startDate,end:endDate,byUser:true,event:event});this.body.emitter.emit(\"panmove\")};Range.prototype._onDragEnd=function(event){if(!this.props.touch.dragging)return;if(!this.options.moveable)return;if(!this.props.touch.allowDragging)return;this.props.touch.dragging=false;if(this.body.dom.root){this.body.dom.root.style.cursor=\"auto\"}this.body.emitter.emit(\"rangechanged\",{start:new Date(this.start),end:new Date(this.end),byUser:true,event:event})};Range.prototype._onMouseWheel=function(event){var delta=0;if(event.wheelDelta){delta=event.wheelDelta/120}else if(event.detail){delta=-event.detail/3}if(this.options.zoomKey&&!event[this.options.zoomKey]&&this.options.zoomable||!this.options.zoomable&&this.options.moveable){return}if(!(this.options.zoomable&&this.options.moveable))return;if(!this._isInsideRange(event))return;if(delta){var scale;if(delta<0){scale=1-delta/5}else{scale=1/(1+delta/5)}var pointerDate;if(this.rolling){pointerDate=this.start+(this.end-this.start)*this.options.rollingMode.offset}else{var pointer=this.getPointer({x:event.clientX,y:event.clientY},this.body.dom.center);pointerDate=this._pointerToDate(pointer)}this.zoom(scale,pointerDate,delta,event);event.preventDefault()}};Range.prototype._onTouch=function(event){this.props.touch.start=this.start;this.props.touch.end=this.end;this.props.touch.allowDragging=true;this.props.touch.center=null;this.scaleOffset=0;this.deltaDifference=0;util.preventDefault(event)};Range.prototype._onPinch=function(event){if(!(this.options.zoomable&&this.options.moveable))return;util.preventDefault(event);this.props.touch.allowDragging=false;if(!this.props.touch.center){this.props.touch.center=this.getPointer(event.center,this.body.dom.center)}this.stopRolling();var scale=1/(event.scale+this.scaleOffset);var centerDate=this._pointerToDate(this.props.touch.center);var hiddenDuration=DateUtil.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);var hiddenDurationBefore=DateUtil.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,centerDate);var hiddenDurationAfter=hiddenDuration-hiddenDurationBefore;var newStart=centerDate-hiddenDurationBefore+(this.props.touch.start-(centerDate-hiddenDurationBefore))*scale;var newEnd=centerDate+hiddenDurationAfter+(this.props.touch.end-(centerDate+hiddenDurationAfter))*scale;this.startToFront=1-scale<=0;this.endToFront=scale-1<=0;var safeStart=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newStart,1-scale,true);var safeEnd=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newEnd,scale-1,true);if(safeStart!=newStart||safeEnd!=newEnd){this.props.touch.start=safeStart;this.props.touch.end=safeEnd;this.scaleOffset=1-event.scale;newStart=safeStart;newEnd=safeEnd}var options={animation:false,byUser:true,event:event};this.setRange(newStart,newEnd,options);this.startToFront=false;this.endToFront=true};Range.prototype._isInsideRange=function(event){var clientX=event.center?event.center.x:event.clientX;var x;if(this.options.rtl){x=clientX-util.getAbsoluteLeft(this.body.dom.centerContainer)}else{x=util.getAbsoluteRight(this.body.dom.centerContainer)-clientX}var time=this.body.util.toTime(x);return time>=this.start&&time<=this.end};Range.prototype._pointerToDate=function(pointer){var conversion;var direction=this.options.direction;validateDirection(direction);if(direction==\"horizontal\"){return this.body.util.toTime(pointer.x).valueOf()}else{var height=this.body.domProps.center.height;conversion=this.conversion(height);return pointer.y/conversion.scale+conversion.offset}};Range.prototype.getPointer=function(touch,element){if(this.options.rtl){return{x:util.getAbsoluteRight(element)-touch.x,y:touch.y-util.getAbsoluteTop(element)}}else{return{x:touch.x-util.getAbsoluteLeft(element),y:touch.y-util.getAbsoluteTop(element)}}};Range.prototype.zoom=function(scale,center,delta,event){if(center==null){center=(this.start+this.end)/2}var hiddenDuration=DateUtil.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);var hiddenDurationBefore=DateUtil.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,center);var hiddenDurationAfter=hiddenDuration-hiddenDurationBefore;var newStart=center-hiddenDurationBefore+(this.start-(center-hiddenDurationBefore))*scale;var newEnd=center+hiddenDurationAfter+(this.end-(center+hiddenDurationAfter))*scale;this.startToFront=delta>0?false:true;this.endToFront=-delta>0?false:true;var safeStart=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newStart,delta,true);var safeEnd=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newEnd,-delta,true);if(safeStart!=newStart||safeEnd!=newEnd){newStart=safeStart;newEnd=safeEnd}var options={animation:false,byUser:true,event:event};this.setRange(newStart,newEnd,options);this.startToFront=false;this.endToFront=true};Range.prototype.move=function(delta){var diff=this.end-this.start;var newStart=this.start+diff*delta;var newEnd=this.end+diff*delta;this.start=newStart;this.end=newEnd};Range.prototype.moveTo=function(moveTo){var center=(this.start+this.end)/2;var diff=center-moveTo;var newStart=this.start-diff;var newEnd=this.end-diff;var options={animation:false,byUser:true,event:null};this.setRange(newStart,newEnd,options)};module.exports=Range},function(module,exports,__webpack_require__){\"use strict\";var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Emitter=__webpack_require__(44);var Hammer=__webpack_require__(10);var hammerUtil=__webpack_require__(37);var util=__webpack_require__(2);var TimeAxis=__webpack_require__(45);var Activator=__webpack_require__(97);var DateUtil=__webpack_require__(36);var CustomTime=__webpack_require__(46);function Core(){}Emitter(Core.prototype);Core.prototype._create=function(container){this.dom={};this.dom.container=container;this.dom.root=document.createElement(\"div\");this.dom.background=document.createElement(\"div\");this.dom.backgroundVertical=document.createElement(\"div\");this.dom.backgroundHorizontal=document.createElement(\"div\");this.dom.centerContainer=document.createElement(\"div\");this.dom.leftContainer=document.createElement(\"div\");this.dom.rightContainer=document.createElement(\"div\");this.dom.center=document.createElement(\"div\");this.dom.left=document.createElement(\"div\");this.dom.right=document.createElement(\"div\");this.dom.top=document.createElement(\"div\");this.dom.bottom=document.createElement(\"div\");this.dom.shadowTop=document.createElement(\"div\");this.dom.shadowBottom=document.createElement(\"div\");this.dom.shadowTopLeft=document.createElement(\"div\");this.dom.shadowBottomLeft=document.createElement(\"div\");this.dom.shadowTopRight=document.createElement(\"div\");this.dom.shadowBottomRight=document.createElement(\"div\");this.dom.rollingModeBtn=document.createElement(\"div\");this.dom.root.className=\"vis-timeline\";this.dom.background.className=\"vis-panel vis-background\";this.dom.backgroundVertical.className=\"vis-panel vis-background vis-vertical\";this.dom.backgroundHorizontal.className=\"vis-panel vis-background vis-horizontal\";this.dom.centerContainer.className=\"vis-panel vis-center\";this.dom.leftContainer.className=\"vis-panel vis-left\";this.dom.rightContainer.className=\"vis-panel vis-right\";this.dom.top.className=\"vis-panel vis-top\";this.dom.bottom.className=\"vis-panel vis-bottom\";this.dom.left.className=\"vis-content\";this.dom.center.className=\"vis-content\";this.dom.right.className=\"vis-content\";this.dom.shadowTop.className=\"vis-shadow vis-top\";this.dom.shadowBottom.className=\"vis-shadow vis-bottom\";this.dom.shadowTopLeft.className=\"vis-shadow vis-top\";this.dom.shadowBottomLeft.className=\"vis-shadow vis-bottom\";this.dom.shadowTopRight.className=\"vis-shadow vis-top\";this.dom.shadowBottomRight.className=\"vis-shadow vis-bottom\";this.dom.rollingModeBtn.className=\"vis-rolling-mode-btn\";this.dom.root.appendChild(this.dom.background);this.dom.root.appendChild(this.dom.backgroundVertical);this.dom.root.appendChild(this.dom.backgroundHorizontal);this.dom.root.appendChild(this.dom.centerContainer);this.dom.root.appendChild(this.dom.leftContainer);this.dom.root.appendChild(this.dom.rightContainer);this.dom.root.appendChild(this.dom.top);this.dom.root.appendChild(this.dom.bottom);this.dom.root.appendChild(this.dom.bottom);this.dom.root.appendChild(this.dom.rollingModeBtn);this.dom.centerContainer.appendChild(this.dom.center);this.dom.leftContainer.appendChild(this.dom.left);this.dom.rightContainer.appendChild(this.dom.right);this.dom.centerContainer.appendChild(this.dom.shadowTop);this.dom.centerContainer.appendChild(this.dom.shadowBottom);this.dom.leftContainer.appendChild(this.dom.shadowTopLeft);this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft);this.dom.rightContainer.appendChild(this.dom.shadowTopRight);this.dom.rightContainer.appendChild(this.dom.shadowBottomRight);this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0};this.on(\"rangechange\",function(){if(this.initialDrawDone===true){this._redraw()}}.bind(this));this.on(\"rangechanged\",function(){if(!this.initialRangeChangeDone){this.initialRangeChangeDone=true}}.bind(this));this.on(\"touch\",this._onTouch.bind(this));this.on(\"panmove\",this._onDrag.bind(this));var me=this;this._origRedraw=this._redraw.bind(this);this._redraw=util.throttle(this._origRedraw);this.on(\"_change\",function(properties){if(me.itemSet&&me.itemSet.initialItemSetDrawn&&properties&&properties.queue==true){me._redraw()}else{me._origRedraw()}});this.hammer=new Hammer(this.dom.root);var pinchRecognizer=this.hammer.get(\"pinch\").set({enable:true});hammerUtil.disablePreventDefaultVertically(pinchRecognizer);this.hammer.get(\"pan\").set({threshold:5,direction:Hammer.DIRECTION_HORIZONTAL});this.listeners={};var events=[\"tap\",\"doubletap\",\"press\",\"pinch\",\"pan\",\"panstart\",\"panmove\",\"panend\"];events.forEach(function(type){var listener=function listener(event){if(me.isActive()){me.emit(type,event)}};me.hammer.on(type,listener);me.listeners[type]=listener});hammerUtil.onTouch(this.hammer,function(event){me.emit(\"touch\",event)}.bind(this));hammerUtil.onRelease(this.hammer,function(event){me.emit(\"release\",event)}.bind(this));function onMouseWheel(event){if(this.isActive()){this.emit(\"mousewheel\",event)}var deltaX=0;var deltaY=0;if(\"detail\"in event){deltaY=event.detail*-1}if(\"wheelDelta\"in event){deltaY=event.wheelDelta}if(\"wheelDeltaY\"in event){deltaY=event.wheelDeltaY}if(\"wheelDeltaX\"in event){deltaX=event.wheelDeltaX*-1}if(\"axis\"in event&&event.axis===event.HORIZONTAL_AXIS){deltaX=deltaY*-1;deltaY=0}if(\"deltaY\"in event){deltaY=event.deltaY*-1}if(\"deltaX\"in event){deltaX=event.deltaX}if(!this.options.zoomKey||event[this.options.zoomKey])return;event.preventDefault();if(this.options.verticalScroll&&Math.abs(deltaY)>=Math.abs(deltaX)){var current=this.props.scrollTop;var adjusted=current+deltaY;if(this.isActive()){this._setScrollTop(adjusted);this._redraw();this.emit(\"scroll\",event)}}else if(this.options.horizontalScroll){var delta=Math.abs(deltaX)>=Math.abs(deltaY)?deltaX:deltaY;var diff=delta/120*(this.range.end-this.range.start)/20;var newStart=this.range.start+diff;var newEnd=this.range.end+diff;var options={animation:false,byUser:true,event:event};this.range.setRange(newStart,newEnd,options)}}if(this.dom.centerContainer.addEventListener){this.dom.centerContainer.addEventListener(\"mousewheel\",onMouseWheel.bind(this),false);this.dom.centerContainer.addEventListener(\"DOMMouseScroll\",onMouseWheel.bind(this),false)}else{this.dom.centerContainer.attachEvent(\"onmousewheel\",onMouseWheel.bind(this))}function onMouseScrollSide(event){if(!me.options.verticalScroll)return;event.preventDefault();if(me.isActive()){var adjusted=-event.target.scrollTop;me._setScrollTop(adjusted);me._redraw();me.emit(\"scrollSide\",event)}}this.dom.left.parentNode.addEventListener(\"scroll\",onMouseScrollSide.bind(this));this.dom.right.parentNode.addEventListener(\"scroll\",onMouseScrollSide.bind(this));var itemAddedToTimeline=false;function handleDragOver(event){if(event.preventDefault){event.preventDefault()}if(!event.target.className.indexOf(\"vis\")>-1)return;if(itemAddedToTimeline)return;event.dataTransfer.dropEffect=\"move\";itemAddedToTimeline=true;return false}function handleDrop(event){if(event.preventDefault){event.preventDefault()}if(event.stopPropagation){event.stopPropagation()}try{var itemData=JSON.parse(event.dataTransfer.getData(\"text\"));if(!itemData||!itemData.content)return}catch(err){return false}itemAddedToTimeline=false;event.center={x:event.clientX,y:event.clientY};if(itemData.target!==\"item\"){me.itemSet._onAddItem(event)}else{me.itemSet._onDropObjectOnItem(event)}me.emit(\"drop\",me.getEventProperties(event));return false}this.dom.center.addEventListener(\"dragover\",handleDragOver.bind(this),false);this.dom.center.addEventListener(\"drop\",handleDrop.bind(this),false);this.customTimes=[];this.touch={};this.redrawCount=0;this.initialDrawDone=false;this.initialRangeChangeDone=false;if(!container)throw new Error(\"No container provided\");container.appendChild(this.dom.root)};Core.prototype.setOptions=function(options){if(options){var fields=[\"width\",\"height\",\"minHeight\",\"maxHeight\",\"autoResize\",\"start\",\"end\",\"clickToUse\",\"dataAttributes\",\"hiddenDates\",\"locale\",\"locales\",\"moment\",\"rtl\",\"zoomKey\",\"horizontalScroll\",\"verticalScroll\"];util.selectiveExtend(fields,this.options,options);this.dom.rollingModeBtn.style.visibility=\"hidden\";if(this.options.rtl){this.dom.container.style.direction=\"rtl\";this.dom.backgroundVertical.className=\"vis-panel vis-background vis-vertical-rtl\"}if(this.options.verticalScroll){if(this.options.rtl){this.dom.rightContainer.className=\"vis-panel vis-right vis-vertical-scroll\"}else{this.dom.leftContainer.className=\"vis-panel vis-left vis-vertical-scroll\"}}if((0,_typeof3[\"default\"])(this.options.orientation)!==\"object\"){this.options.orientation={item:undefined,axis:undefined}}if(\"orientation\"in options){if(typeof options.orientation===\"string\"){this.options.orientation={item:options.orientation,axis:options.orientation}}else if((0,_typeof3[\"default\"])(options.orientation)===\"object\"){if(\"item\"in options.orientation){this.options.orientation.item=options.orientation.item}if(\"axis\"in options.orientation){this.options.orientation.axis=options.orientation.axis}}}if(this.options.orientation.axis===\"both\"){if(!this.timeAxis2){var timeAxis2=this.timeAxis2=new TimeAxis(this.body);timeAxis2.setOptions=function(options){var _options=options?util.extend({},options):{};_options.orientation=\"top\";TimeAxis.prototype.setOptions.call(timeAxis2,_options)};this.components.push(timeAxis2)}}else{if(this.timeAxis2){var index=this.components.indexOf(this.timeAxis2);if(index!==-1){this.components.splice(index,1)}this.timeAxis2.destroy();this.timeAxis2=null}}if(typeof options.drawPoints==\"function\"){options.drawPoints={onRender:options.drawPoints}}if(\"hiddenDates\"in this.options){DateUtil.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates)}if(\"clickToUse\"in options){if(options.clickToUse){if(!this.activator){this.activator=new Activator(this.dom.root)}}else{if(this.activator){this.activator.destroy();delete this.activator}}}if(\"showCustomTime\"in options){throw new Error(\"Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])\")}this._initAutoResize()}this.components.forEach(function(component){return component.setOptions(options)});if(\"configure\"in options){if(!this.configurator){this.configurator=this._createConfigurator()}this.configurator.setOptions(options.configure);var appliedOptions=util.deepExtend({},this.options);this.components.forEach(function(component){util.deepExtend(appliedOptions,component.options)});this.configurator.setModuleOptions({global:appliedOptions})}this._redraw()};Core.prototype.isActive=function(){return!this.activator||this.activator.active};Core.prototype.destroy=function(){this.setItems(null);this.setGroups(null);this.off();this._stopAutoResize();if(this.dom.root.parentNode){this.dom.root.parentNode.removeChild(this.dom.root)}this.dom=null;if(this.activator){this.activator.destroy();delete this.activator}for(var event in this.listeners){if(this.listeners.hasOwnProperty(event)){delete this.listeners[event]}}this.listeners=null;this.hammer=null;this.components.forEach(function(component){return component.destroy()});this.body=null};Core.prototype.setCustomTime=function(time,id){var customTimes=this.customTimes.filter(function(component){return id===component.options.id});if(customTimes.length===0){throw new Error(\"No custom time bar found with id \"+(0,_stringify2[\"default\"])(id))}if(customTimes.length>0){customTimes[0].setCustomTime(time)}};Core.prototype.getCustomTime=function(id){var customTimes=this.customTimes.filter(function(component){return component.options.id===id});if(customTimes.length===0){throw new Error(\"No custom time bar found with id \"+(0,_stringify2[\"default\"])(id))}return customTimes[0].getCustomTime()};Core.prototype.setCustomTimeTitle=function(title,id){var customTimes=this.customTimes.filter(function(component){return component.options.id===id});if(customTimes.length===0){throw new Error(\"No custom time bar found with id \"+(0,_stringify2[\"default\"])(id))}if(customTimes.length>0){return customTimes[0].setCustomTitle(title)}};Core.prototype.getEventProperties=function(event){return{event:event}};Core.prototype.addCustomTime=function(time,id){var timestamp=time!==undefined?util.convert(time,\"Date\").valueOf():new Date;var exists=this.customTimes.some(function(customTime){return customTime.options.id===id});if(exists){throw new Error(\"A custom time with id \"+(0,_stringify2[\"default\"])(id)+\" already exists\")}var customTime=new CustomTime(this.body,util.extend({},this.options,{time:timestamp,id:id}));this.customTimes.push(customTime);this.components.push(customTime);this._redraw();return id};Core.prototype.removeCustomTime=function(id){var customTimes=this.customTimes.filter(function(bar){return bar.options.id===id});if(customTimes.length===0){throw new Error(\"No custom time bar found with id \"+(0,_stringify2[\"default\"])(id))}customTimes.forEach(function(customTime){this.customTimes.splice(this.customTimes.indexOf(customTime),1);this.components.splice(this.components.indexOf(customTime),1);customTime.destroy()}.bind(this))};Core.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]};Core.prototype.fit=function(options,callback){var range=this.getDataRange();if(range.min===null&&range.max===null){return}var interval=range.max-range.min;var min=new Date(range.min.valueOf()-interval*.01);var max=new Date(range.max.valueOf()+interval*.01);var animation=options&&options.animation!==undefined?options.animation:true;this.range.setRange(min,max,{animation:animation},callback)};Core.prototype.getDataRange=function(){throw new Error(\"Cannot invoke abstract method getDataRange\")};Core.prototype.setWindow=function(start,end,options,callback){if(typeof arguments[2]==\"function\"){callback=arguments[2];options={}}var animation;var range;if(arguments.length==1){range=arguments[0];animation=range.animation!==undefined?range.animation:true;this.range.setRange(range.start,range.end,{animation:animation})}else if(arguments.length==2&&typeof arguments[1]==\"function\"){range=arguments[0];callback=arguments[1];animation=range.animation!==undefined?range.animation:true\n;this.range.setRange(range.start,range.end,{animation:animation},callback)}else{animation=options&&options.animation!==undefined?options.animation:true;this.range.setRange(start,end,{animation:animation},callback)}};Core.prototype.moveTo=function(time,options,callback){if(typeof arguments[1]==\"function\"){callback=arguments[1];options={}}var interval=this.range.end-this.range.start;var t=util.convert(time,\"Date\").valueOf();var start=t-interval/2;var end=t+interval/2;var animation=options&&options.animation!==undefined?options.animation:true;this.range.setRange(start,end,{animation:animation},callback)};Core.prototype.getWindow=function(){var range=this.range.getRange();return{start:new Date(range.start),end:new Date(range.end)}};Core.prototype.zoomIn=function(percentage,options,callback){if(!percentage||percentage<0||percentage>1)return;if(typeof arguments[1]==\"function\"){callback=arguments[1];options={}}var range=this.getWindow();var start=range.start.valueOf();var end=range.end.valueOf();var interval=end-start;var newInterval=interval/(1+percentage);var distance=(interval-newInterval)/2;var newStart=start+distance;var newEnd=end-distance;this.setWindow(newStart,newEnd,options,callback)};Core.prototype.zoomOut=function(percentage,options,callback){if(!percentage||percentage<0||percentage>1)return;if(typeof arguments[1]==\"function\"){callback=arguments[1];options={}}var range=this.getWindow();var start=range.start.valueOf();var end=range.end.valueOf();var interval=end-start;var newStart=start-interval*percentage/2;var newEnd=end+interval*percentage/2;this.setWindow(newStart,newEnd,options,callback)};Core.prototype.redraw=function(){this._redraw()};Core.prototype._redraw=function(){this.redrawCount++;var resized=false;var options=this.options;var props=this.props;var dom=this.dom;if(!dom||!dom.container||dom.root.offsetWidth==0)return;DateUtil.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates);if(options.orientation==\"top\"){util.addClassName(dom.root,\"vis-top\");util.removeClassName(dom.root,\"vis-bottom\")}else{util.removeClassName(dom.root,\"vis-top\");util.addClassName(dom.root,\"vis-bottom\")}dom.root.style.maxHeight=util.option.asSize(options.maxHeight,\"\");dom.root.style.minHeight=util.option.asSize(options.minHeight,\"\");dom.root.style.width=util.option.asSize(options.width,\"\");props.border.left=(dom.centerContainer.offsetWidth-dom.centerContainer.clientWidth)/2;props.border.right=props.border.left;props.border.top=(dom.centerContainer.offsetHeight-dom.centerContainer.clientHeight)/2;props.border.bottom=props.border.top;props.borderRootHeight=dom.root.offsetHeight-dom.root.clientHeight;props.borderRootWidth=dom.root.offsetWidth-dom.root.clientWidth;if(dom.centerContainer.clientHeight===0){props.border.left=props.border.top;props.border.right=props.border.left}if(dom.root.clientHeight===0){props.borderRootWidth=props.borderRootHeight}props.center.height=dom.center.offsetHeight;props.left.height=dom.left.offsetHeight;props.right.height=dom.right.offsetHeight;props.top.height=dom.top.clientHeight||-props.border.top;props.bottom.height=dom.bottom.clientHeight||-props.border.bottom;var contentHeight=Math.max(props.left.height,props.center.height,props.right.height);var autoHeight=props.top.height+contentHeight+props.bottom.height+props.borderRootHeight+props.border.top+props.border.bottom;dom.root.style.height=util.option.asSize(options.height,autoHeight+\"px\");props.root.height=dom.root.offsetHeight;props.background.height=props.root.height-props.borderRootHeight;var containerHeight=props.root.height-props.top.height-props.bottom.height-props.borderRootHeight;props.centerContainer.height=containerHeight;props.leftContainer.height=containerHeight;props.rightContainer.height=props.leftContainer.height;props.root.width=dom.root.offsetWidth;props.background.width=props.root.width-props.borderRootWidth;if(!this.initialDrawDone){props.scrollbarWidth=util.getScrollBarWidth()}if(options.verticalScroll){if(options.rtl){props.left.width=dom.leftContainer.clientWidth||-props.border.left;props.right.width=dom.rightContainer.clientWidth+props.scrollbarWidth||-props.border.right}else{props.left.width=dom.leftContainer.clientWidth+props.scrollbarWidth||-props.border.left;props.right.width=dom.rightContainer.clientWidth||-props.border.right}}else{props.left.width=dom.leftContainer.clientWidth||-props.border.left;props.right.width=dom.rightContainer.clientWidth||-props.border.right}this._setDOM();var offset=this._updateScrollTop();if(options.orientation.item!=\"top\"){offset+=Math.max(props.centerContainer.height-props.center.height-props.border.top-props.border.bottom,0)}dom.center.style.top=offset+\"px\";var visibilityTop=props.scrollTop==0?\"hidden\":\"\";var visibilityBottom=props.scrollTop==props.scrollTopMin?\"hidden\":\"\";dom.shadowTop.style.visibility=visibilityTop;dom.shadowBottom.style.visibility=visibilityBottom;dom.shadowTopLeft.style.visibility=visibilityTop;dom.shadowBottomLeft.style.visibility=visibilityBottom;dom.shadowTopRight.style.visibility=visibilityTop;dom.shadowBottomRight.style.visibility=visibilityBottom;if(options.verticalScroll){dom.rightContainer.className=\"vis-panel vis-right vis-vertical-scroll\";dom.leftContainer.className=\"vis-panel vis-left vis-vertical-scroll\";dom.shadowTopRight.style.visibility=\"hidden\";dom.shadowBottomRight.style.visibility=\"hidden\";dom.shadowTopLeft.style.visibility=\"hidden\";dom.shadowBottomLeft.style.visibility=\"hidden\";dom.left.style.top=\"0px\";dom.right.style.top=\"0px\"}if(!options.verticalScroll||props.center.height<props.centerContainer.height){dom.left.style.top=offset+\"px\";dom.right.style.top=offset+\"px\";dom.rightContainer.className=dom.rightContainer.className.replace(new RegExp(\"(?:^|\\\\s)\"+\"vis-vertical-scroll\"+\"(?:\\\\s|$)\"),\" \");dom.leftContainer.className=dom.leftContainer.className.replace(new RegExp(\"(?:^|\\\\s)\"+\"vis-vertical-scroll\"+\"(?:\\\\s|$)\"),\" \");props.left.width=dom.leftContainer.clientWidth||-props.border.left;props.right.width=dom.rightContainer.clientWidth||-props.border.right;this._setDOM()}var contentsOverflow=props.center.height>props.centerContainer.height;this.hammer.get(\"pan\").set({direction:contentsOverflow?Hammer.DIRECTION_ALL:Hammer.DIRECTION_HORIZONTAL});this.components.forEach(function(component){resized=component.redraw()||resized});var MAX_REDRAW=5;if(resized){if(this.redrawCount<MAX_REDRAW){this.body.emitter.emit(\"_change\");return}else{console.log(\"WARNING: infinite loop in redraw?\")}}else{this.redrawCount=0}this.body.emitter.emit(\"changed\")};Core.prototype._setDOM=function(){var props=this.props;var dom=this.dom;props.leftContainer.width=props.left.width;props.rightContainer.width=props.right.width;var centerWidth=props.root.width-props.left.width-props.right.width-props.borderRootWidth;props.center.width=centerWidth;props.centerContainer.width=centerWidth;props.top.width=centerWidth;props.bottom.width=centerWidth;dom.background.style.height=props.background.height+\"px\";dom.backgroundVertical.style.height=props.background.height+\"px\";dom.backgroundHorizontal.style.height=props.centerContainer.height+\"px\";dom.centerContainer.style.height=props.centerContainer.height+\"px\";dom.leftContainer.style.height=props.leftContainer.height+\"px\";dom.rightContainer.style.height=props.rightContainer.height+\"px\";dom.background.style.width=props.background.width+\"px\";dom.backgroundVertical.style.width=props.centerContainer.width+\"px\";dom.backgroundHorizontal.style.width=props.background.width+\"px\";dom.centerContainer.style.width=props.center.width+\"px\";dom.top.style.width=props.top.width+\"px\";dom.bottom.style.width=props.bottom.width+\"px\";dom.background.style.left=\"0\";dom.background.style.top=\"0\";dom.backgroundVertical.style.left=props.left.width+props.border.left+\"px\";dom.backgroundVertical.style.top=\"0\";dom.backgroundHorizontal.style.left=\"0\";dom.backgroundHorizontal.style.top=props.top.height+\"px\";dom.centerContainer.style.left=props.left.width+\"px\";dom.centerContainer.style.top=props.top.height+\"px\";dom.leftContainer.style.left=\"0\";dom.leftContainer.style.top=props.top.height+\"px\";dom.rightContainer.style.left=props.left.width+props.center.width+\"px\";dom.rightContainer.style.top=props.top.height+\"px\";dom.top.style.left=props.left.width+\"px\";dom.top.style.top=\"0\";dom.bottom.style.left=props.left.width+\"px\";dom.bottom.style.top=props.top.height+props.centerContainer.height+\"px\";dom.center.style.left=\"0\";dom.left.style.left=\"0\";dom.right.style.left=\"0\"};Core.prototype.repaint=function(){throw new Error(\"Function repaint is deprecated. Use redraw instead.\")};Core.prototype.setCurrentTime=function(time){if(!this.currentTime){throw new Error(\"Option showCurrentTime must be true\")}this.currentTime.setCurrentTime(time)};Core.prototype.getCurrentTime=function(){if(!this.currentTime){throw new Error(\"Option showCurrentTime must be true\")}return this.currentTime.getCurrentTime()};Core.prototype._toTime=function(x){return DateUtil.toTime(this,x,this.props.center.width)};Core.prototype._toGlobalTime=function(x){return DateUtil.toTime(this,x,this.props.root.width)};Core.prototype._toScreen=function(time){return DateUtil.toScreen(this,time,this.props.center.width)};Core.prototype._toGlobalScreen=function(time){return DateUtil.toScreen(this,time,this.props.root.width)};Core.prototype._initAutoResize=function(){if(this.options.autoResize==true){this._startAutoResize()}else{this._stopAutoResize()}};Core.prototype._startAutoResize=function(){var me=this;this._stopAutoResize();this._onResize=function(){if(me.options.autoResize!=true){me._stopAutoResize();return}if(me.dom.root){if(me.dom.root.offsetWidth!=me.props.lastWidth||me.dom.root.offsetHeight!=me.props.lastHeight){me.props.lastWidth=me.dom.root.offsetWidth;me.props.lastHeight=me.dom.root.offsetHeight;me.props.scrollbarWidth=util.getScrollBarWidth();me.body.emitter.emit(\"_change\")}}};util.addEventListener(window,\"resize\",this._onResize);if(me.dom.root){me.props.lastWidth=me.dom.root.offsetWidth;me.props.lastHeight=me.dom.root.offsetHeight}this.watchTimer=setInterval(this._onResize,1e3)};Core.prototype._stopAutoResize=function(){if(this.watchTimer){clearInterval(this.watchTimer);this.watchTimer=undefined}if(this._onResize){util.removeEventListener(window,\"resize\",this._onResize);this._onResize=null}};Core.prototype._onTouch=function(event){this.touch.allowDragging=true;this.touch.initialScrollTop=this.props.scrollTop};Core.prototype._onPinch=function(event){this.touch.allowDragging=false};Core.prototype._onDrag=function(event){if(!event)return;if(!this.touch.allowDragging)return;var delta=event.deltaY;var oldScrollTop=this._getScrollTop();var newScrollTop=this._setScrollTop(this.touch.initialScrollTop+delta);if(this.options.verticalScroll){this.dom.left.parentNode.scrollTop=-this.props.scrollTop;this.dom.right.parentNode.scrollTop=-this.props.scrollTop}if(newScrollTop!=oldScrollTop){this.emit(\"verticalDrag\")}};Core.prototype._setScrollTop=function(scrollTop){this.props.scrollTop=scrollTop;this._updateScrollTop();return this.props.scrollTop};Core.prototype._updateScrollTop=function(){var scrollTopMin=Math.min(this.props.centerContainer.height-this.props.center.height,0);if(scrollTopMin!=this.props.scrollTopMin){if(this.options.orientation.item!=\"top\"){this.props.scrollTop+=scrollTopMin-this.props.scrollTopMin}this.props.scrollTopMin=scrollTopMin}if(this.props.scrollTop>0)this.props.scrollTop=0;if(this.props.scrollTop<scrollTopMin)this.props.scrollTop=scrollTopMin;if(this.options.verticalScroll){this.dom.left.parentNode.scrollTop=-this.props.scrollTop;this.dom.right.parentNode.scrollTop=-this.props.scrollTop}return this.props.scrollTop};Core.prototype._getScrollTop=function(){return this.props.scrollTop};Core.prototype._createConfigurator=function(){throw new Error(\"Cannot invoke abstract method _createConfigurator\")};module.exports=Core},function(module,exports,__webpack_require__){\"use strict\";var moment=__webpack_require__(9);var DateUtil=__webpack_require__(36);var util=__webpack_require__(2);function TimeStep(start,end,minimumStep,hiddenDates,options){this.moment=moment;this.current=this.moment();this._start=this.moment();this._end=this.moment();this.autoScale=true;this.scale=\"day\";this.step=1;this.setRange(start,end,minimumStep);this.switchedDay=false;this.switchedMonth=false;this.switchedYear=false;if(Array.isArray(hiddenDates)){this.hiddenDates=hiddenDates}else if(hiddenDates!=undefined){this.hiddenDates=[hiddenDates]}else{this.hiddenDates=[]}this.format=TimeStep.FORMAT;this.options=options?options:{}}TimeStep.FORMAT={minorLabels:{millisecond:\"SSS\",second:\"s\",minute:\"HH:mm\",hour:\"HH:mm\",weekday:\"ddd D\",day:\"D\",week:\"w\",month:\"MMM\",year:\"YYYY\"},majorLabels:{millisecond:\"HH:mm:ss\",second:\"D MMMM HH:mm\",minute:\"ddd D MMMM\",hour:\"ddd D MMMM\",weekday:\"MMMM YYYY\",day:\"MMMM YYYY\",week:\"MMMM YYYY\",month:\"YYYY\",year:\"\"}};TimeStep.prototype.setMoment=function(moment){this.moment=moment;this.current=this.moment(this.current.valueOf());this._start=this.moment(this._start.valueOf());this._end=this.moment(this._end.valueOf())};TimeStep.prototype.setFormat=function(format){var defaultFormat=util.deepExtend({},TimeStep.FORMAT);this.format=util.deepExtend(defaultFormat,format)};TimeStep.prototype.setRange=function(start,end,minimumStep){if(!(start instanceof Date)||!(end instanceof Date)){throw\"No legal start or end date in method setRange\"}this._start=start!=undefined?this.moment(start.valueOf()):new Date;this._end=end!=undefined?this.moment(end.valueOf()):new Date;if(this.autoScale){this.setMinimumStep(minimumStep)}};TimeStep.prototype.start=function(){this.current=this._start.clone();this.roundToMinor()};TimeStep.prototype.roundToMinor=function(){if(this.scale==\"week\"){this.current.weekday(0)}switch(this.scale){case\"year\":this.current.year(this.step*Math.floor(this.current.year()/this.step));this.current.month(0);case\"month\":this.current.date(1);case\"week\":case\"day\":case\"weekday\":this.current.hours(0);case\"hour\":this.current.minutes(0);case\"minute\":this.current.seconds(0);case\"second\":this.current.milliseconds(0)}if(this.step!=1){switch(this.scale){case\"millisecond\":this.current.subtract(this.current.milliseconds()%this.step,\"milliseconds\");break;case\"second\":this.current.subtract(this.current.seconds()%this.step,\"seconds\");break;case\"minute\":this.current.subtract(this.current.minutes()%this.step,\"minutes\");break;case\"hour\":this.current.subtract(this.current.hours()%this.step,\"hours\");break;case\"weekday\":case\"day\":this.current.subtract((this.current.date()-1)%this.step,\"day\");break;case\"week\":this.current.subtract(this.current.week()%this.step,\"week\");break;case\"month\":this.current.subtract(this.current.month()%this.step,\"month\");break;case\"year\":this.current.subtract(this.current.year()%this.step,\"year\");break;default:break}}};TimeStep.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()};TimeStep.prototype.next=function(){var prev=this.current.valueOf();switch(this.scale){case\"millisecond\":this.current.add(this.step,\"millisecond\");break;case\"second\":this.current.add(this.step,\"second\");break;case\"minute\":this.current.add(this.step,\"minute\");break;case\"hour\":this.current.add(this.step,\"hour\");if(this.current.month()<6){this.current.subtract(this.current.hours()%this.step,\"hour\")}else{if(this.current.hours()%this.step!==0){this.current.add(this.step-this.current.hours()%this.step,\"hour\")}}break;case\"weekday\":case\"day\":this.current.add(this.step,\"day\");break;case\"week\":if(this.current.weekday()!==0){this.current.weekday(0);this.current.add(this.step,\"week\")}else if(this.options.showMajorLabels===false){this.current.add(this.step,\"week\")}else{var nextWeek=this.current.clone();nextWeek.add(1,\"week\");if(nextWeek.isSame(this.current,\"month\")){this.current.add(this.step,\"week\")}else{this.current.add(this.step,\"week\");this.current.date(1)}}break;case\"month\":this.current.add(this.step,\"month\");break;case\"year\":this.current.add(this.step,\"year\");break;default:break}if(this.step!=1){switch(this.scale){case\"millisecond\":if(this.current.milliseconds()>0&&this.current.milliseconds()<this.step)this.current.milliseconds(0);break;case\"second\":if(this.current.seconds()>0&&this.current.seconds()<this.step)this.current.seconds(0);break;case\"minute\":if(this.current.minutes()>0&&this.current.minutes()<this.step)this.current.minutes(0);break;case\"hour\":if(this.current.hours()>0&&this.current.hours()<this.step)this.current.hours(0);break;case\"weekday\":case\"day\":if(this.current.date()<this.step+1)this.current.date(1);break;case\"week\":if(this.current.week()<this.step)this.current.week(1);break;case\"month\":if(this.current.month()<this.step)this.current.month(0);break;case\"year\":break;default:break}}if(this.current.valueOf()==prev){this.current=this._end.clone()}this.switchedDay=false;this.switchedMonth=false;this.switchedYear=false;DateUtil.stepOverHiddenDates(this.moment,this,prev)};TimeStep.prototype.getCurrent=function(){return this.current};TimeStep.prototype.setScale=function(params){if(params&&typeof params.scale==\"string\"){this.scale=params.scale;this.step=params.step>0?params.step:1;this.autoScale=false}};TimeStep.prototype.setAutoScale=function(enable){this.autoScale=enable};TimeStep.prototype.setMinimumStep=function(minimumStep){if(minimumStep==undefined){return}var stepYear=1e3*60*60*24*30*12;var stepMonth=1e3*60*60*24*30;var stepDay=1e3*60*60*24;var stepHour=1e3*60*60;var stepMinute=1e3*60;var stepSecond=1e3;var stepMillisecond=1;if(stepYear*1e3>minimumStep){this.scale=\"year\";this.step=1e3}if(stepYear*500>minimumStep){this.scale=\"year\";this.step=500}if(stepYear*100>minimumStep){this.scale=\"year\";this.step=100}if(stepYear*50>minimumStep){this.scale=\"year\";this.step=50}if(stepYear*10>minimumStep){this.scale=\"year\";this.step=10}if(stepYear*5>minimumStep){this.scale=\"year\";this.step=5}if(stepYear>minimumStep){this.scale=\"year\";this.step=1}if(stepMonth*3>minimumStep){this.scale=\"month\";this.step=3}if(stepMonth>minimumStep){this.scale=\"month\";this.step=1}if(stepDay*5>minimumStep){this.scale=\"day\";this.step=5}if(stepDay*2>minimumStep){this.scale=\"day\";this.step=2}if(stepDay>minimumStep){this.scale=\"day\";this.step=1}if(stepDay/2>minimumStep){this.scale=\"weekday\";this.step=1}if(stepHour*4>minimumStep){this.scale=\"hour\";this.step=4}if(stepHour>minimumStep){this.scale=\"hour\";this.step=1}if(stepMinute*15>minimumStep){this.scale=\"minute\";this.step=15}if(stepMinute*10>minimumStep){this.scale=\"minute\";this.step=10}if(stepMinute*5>minimumStep){this.scale=\"minute\";this.step=5}if(stepMinute>minimumStep){this.scale=\"minute\";this.step=1}if(stepSecond*15>minimumStep){this.scale=\"second\";this.step=15}if(stepSecond*10>minimumStep){this.scale=\"second\";this.step=10}if(stepSecond*5>minimumStep){this.scale=\"second\";this.step=5}if(stepSecond>minimumStep){this.scale=\"second\";this.step=1}if(stepMillisecond*200>minimumStep){this.scale=\"millisecond\";this.step=200}if(stepMillisecond*100>minimumStep){this.scale=\"millisecond\";this.step=100}if(stepMillisecond*50>minimumStep){this.scale=\"millisecond\";this.step=50}if(stepMillisecond*10>minimumStep){this.scale=\"millisecond\";this.step=10}if(stepMillisecond*5>minimumStep){this.scale=\"millisecond\";this.step=5}if(stepMillisecond>minimumStep){this.scale=\"millisecond\";this.step=1}};TimeStep.snap=function(date,scale,step){var clone=moment(date);if(scale==\"year\"){var year=clone.year()+Math.round(clone.month()/12);clone.year(Math.round(year/step)*step);clone.month(0);clone.date(0);clone.hours(0);clone.minutes(0);clone.seconds(0);clone.milliseconds(0)}else if(scale==\"month\"){if(clone.date()>15){clone.date(1);clone.add(1,\"month\")}else{clone.date(1)}clone.hours(0);clone.minutes(0);clone.seconds(0);clone.milliseconds(0)}else if(scale==\"week\"){if(clone.weekday()>2){clone.weekday(0);clone.add(1,\"week\")}else{clone.weekday(0)}clone.hours(0);clone.minutes(0);clone.seconds(0);clone.milliseconds(0)}else if(scale==\"day\"){switch(step){case 5:case 2:clone.hours(Math.round(clone.hours()/24)*24);break;default:clone.hours(Math.round(clone.hours()/12)*12);break}clone.minutes(0);clone.seconds(0);clone.milliseconds(0)}else if(scale==\"weekday\"){switch(step){case 5:case 2:clone.hours(Math.round(clone.hours()/12)*12);break;default:clone.hours(Math.round(clone.hours()/6)*6);break}clone.minutes(0);clone.seconds(0);clone.milliseconds(0)}else if(scale==\"hour\"){switch(step){case 4:clone.minutes(Math.round(clone.minutes()/60)*60);break;default:clone.minutes(Math.round(clone.minutes()/30)*30);break}clone.seconds(0);clone.milliseconds(0)}else if(scale==\"minute\"){switch(step){case 15:case 10:clone.minutes(Math.round(clone.minutes()/5)*5);clone.seconds(0);break;case 5:clone.seconds(Math.round(clone.seconds()/60)*60);break;default:clone.seconds(Math.round(clone.seconds()/30)*30);break}clone.milliseconds(0)}else if(scale==\"second\"){switch(step){case 15:case 10:clone.seconds(Math.round(clone.seconds()/5)*5);clone.milliseconds(0);break;case 5:clone.milliseconds(Math.round(clone.milliseconds()/1e3)*1e3);break;default:clone.milliseconds(Math.round(clone.milliseconds()/500)*500);break}}else if(scale==\"millisecond\"){var _step=step>5?step/2:1;clone.milliseconds(Math.round(clone.milliseconds()/_step)*_step)}return clone};TimeStep.prototype.isMajor=function(){if(this.switchedYear==true){switch(this.scale){case\"year\":case\"month\":case\"week\":case\"weekday\":case\"day\":case\"hour\":case\"minute\":case\"second\":case\"millisecond\":return true;default:return false}}else if(this.switchedMonth==true){switch(this.scale){case\"week\":case\"weekday\":case\"day\":case\"hour\":case\"minute\":case\"second\":case\"millisecond\":return true;default:return false}}else if(this.switchedDay==true){switch(this.scale){case\"millisecond\":case\"second\":case\"minute\":case\"hour\":return true;default:return false}}var date=this.moment(this.current);switch(this.scale){case\"millisecond\":return date.milliseconds()==0;case\"second\":return date.seconds()==0;case\"minute\":return date.hours()==0&&date.minutes()==0;case\"hour\":return date.hours()==0;case\"weekday\":case\"day\":return date.date()==1;case\"week\":return date.date()==1;case\"month\":return date.month()==0;case\"year\":return false;default:return false}};TimeStep.prototype.getLabelMinor=function(date){if(date==undefined){date=this.current}if(date instanceof Date){date=this.moment(date)}if(typeof this.format.minorLabels===\"function\"){return this.format.minorLabels(date,this.scale,this.step)}var format=this.format.minorLabels[this.scale];switch(this.scale){case\"week\":if(this.isMajor()&&date.weekday()!==0){return\"\"}default:return format&&format.length>0?this.moment(date).format(format):\"\"}};TimeStep.prototype.getLabelMajor=function(date){if(date==undefined){date=this.current}if(date instanceof Date){date=this.moment(date)}if(typeof this.format.majorLabels===\"function\"){return this.format.majorLabels(date,this.scale,this.step)}var format=this.format.majorLabels[this.scale];return format&&format.length>0?this.moment(date).format(format):\"\"};TimeStep.prototype.getClassName=function(){var _moment=this.moment;var m=this.moment(this.current);var current=m.locale?m.locale(\"en\"):m.lang(\"en\");var step=this.step;var classNames=[];function even(value){return value/step%2==0?\" vis-even\":\" vis-odd\"}function today(date){if(date.isSame(new Date,\"day\")){return\" vis-today\"}if(date.isSame(_moment().add(1,\"day\"),\"day\")){return\" vis-tomorrow\"}if(date.isSame(_moment().add(-1,\"day\"),\"day\")){return\" vis-yesterday\"}return\"\"}function currentWeek(date){return date.isSame(new Date,\"week\")?\" vis-current-week\":\"\"}function currentMonth(date){return date.isSame(new Date,\"month\")?\" vis-current-month\":\"\"}function currentYear(date){return date.isSame(new Date,\"year\")?\" vis-current-year\":\"\"}switch(this.scale){case\"millisecond\":classNames.push(today(current));classNames.push(even(current.milliseconds()));break;case\"second\":classNames.push(today(current));classNames.push(even(current.seconds()));break;case\"minute\":classNames.push(today(current));classNames.push(even(current.minutes()));break;case\"hour\":classNames.push(\"vis-h\"+current.hours()+(this.step==4?\"-h\"+(current.hours()+4):\"\"));classNames.push(today(current));classNames.push(even(current.hours()));break;case\"weekday\":classNames.push(\"vis-\"+current.format(\"dddd\").toLowerCase());classNames.push(today(current));classNames.push(currentWeek(current));classNames.push(even(current.date()));break;case\"day\":classNames.push(\"vis-day\"+current.date());classNames.push(\"vis-\"+current.format(\"MMMM\").toLowerCase());classNames.push(today(current));classNames.push(currentMonth(current));classNames.push(this.step<=2?today(current):\"\");classNames.push(this.step<=2?\"vis-\"+current.format(\"dddd\").toLowerCase():\"\");classNames.push(even(current.date()-1));break;case\"week\":classNames.push(\"vis-week\"+current.format(\"w\"));classNames.push(currentWeek(current));classNames.push(even(current.week()));break;case\"month\":classNames.push(\"vis-\"+current.format(\"MMMM\").toLowerCase());classNames.push(currentMonth(current));classNames.push(even(current.month()));break;case\"year\":classNames.push(\"vis-year\"+current.year());classNames.push(currentYear(current));classNames.push(even(current.year()));break}return classNames.filter(String).join(\" \")};module.exports=TimeStep},function(module,exports,__webpack_require__){\"use strict\";var util=__webpack_require__(2);var Component=__webpack_require__(16);var moment=__webpack_require__(9);var locales=__webpack_require__(98);function CurrentTime(body,options){this.body=body;this.defaultOptions={rtl:false,showCurrentTime:true,moment:moment,locales:locales,locale:\"en\"};this.options=util.extend({},this.defaultOptions);this.offset=0;this._create();this.setOptions(options)}CurrentTime.prototype=new Component;CurrentTime.prototype._create=function(){var bar=document.createElement(\"div\");bar.className=\"vis-current-time\";bar.style.position=\"absolute\";bar.style.top=\"0px\";bar.style.height=\"100%\";this.bar=bar};CurrentTime.prototype.destroy=function(){this.options.showCurrentTime=false;this.redraw();this.body=null};CurrentTime.prototype.setOptions=function(options){if(options){util.selectiveExtend([\"rtl\",\"showCurrentTime\",\"moment\",\"locale\",\"locales\"],this.options,options)}};CurrentTime.prototype.redraw=function(){if(this.options.showCurrentTime){var parent=this.body.dom.backgroundVertical;if(this.bar.parentNode!=parent){if(this.bar.parentNode){this.bar.parentNode.removeChild(this.bar)}parent.appendChild(this.bar);this.start()}var now=this.options.moment((new Date).valueOf()+this.offset);var x=this.body.util.toScreen(now);var locale=this.options.locales[this.options.locale];if(!locale){if(!this.warned){console.log(\"WARNING: options.locales['\"+this.options.locale+\"'] not found. See http://visjs.org/docs/timeline/#Localization\");this.warned=true}locale=this.options.locales[\"en\"]}var title=locale.current+\" \"+locale.time+\": \"+now.format(\"dddd, MMMM Do YYYY, H:mm:ss\");title=title.charAt(0).toUpperCase()+title.substring(1);if(this.options.rtl){this.bar.style.right=x+\"px\"}else{this.bar.style.left=x+\"px\"}this.bar.title=title}else{if(this.bar.parentNode){this.bar.parentNode.removeChild(this.bar)}this.stop()}return false};CurrentTime.prototype.start=function(){var me=this;function update(){me.stop();var scale=me.body.range.conversion(me.body.domProps.center.width).scale;var interval=1/scale/10;if(interval<30)interval=30;if(interval>1e3)interval=1e3;me.redraw();me.body.emitter.emit(\"currentTimeTick\");me.currentTimeTimer=setTimeout(update,interval)}update()};CurrentTime.prototype.stop=function(){if(this.currentTimeTimer!==undefined){clearTimeout(this.currentTimeTimer);delete this.currentTimeTimer}};CurrentTime.prototype.setCurrentTime=function(time){var t=util.convert(time,\"Date\").valueOf();var now=(new Date).valueOf();this.offset=t-now;this.redraw()};CurrentTime.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)};module.exports=CurrentTime},function(module,exports,__webpack_require__){\"use strict\";var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var stack=__webpack_require__(100);function Group(groupId,data,itemSet){this.groupId=groupId;this.subgroups={};this.subgroupStack={};this.subgroupStackAll=false;this.doInnerStack=false;this.subgroupIndex=0;this.subgroupOrderer=data&&data.subgroupOrder;this.itemSet=itemSet;this.isVisible=null;this.stackDirty=true;if(data&&data.nestedGroups){this.nestedGroups=data.nestedGroups;if(data.showNested==false){this.showNested=false}else{this.showNested=true}}if(data&&data.subgroupStack){if(typeof data.subgroupStack===\"boolean\"){this.doInnerStack=data.subgroupStack;this.subgroupStackAll=data.subgroupStack}else{for(var key in data.subgroupStack){this.subgroupStack[key]=data.subgroupStack[key];this.doInnerStack=this.doInnerStack||data.subgroupStack[key]}}}this.nestedInGroup=null;this.dom={};this.props={label:{width:0,height:0}};this.className=null;this.items={};this.visibleItems=[];this.itemsInRange=[];this.orderedItems={byStart:[],byEnd:[]};this.checkRangedItems=false;var me=this;this.itemSet.body.emitter.on(\"checkRangedItems\",function(){me.checkRangedItems=true});this._create();this.setData(data)}Group.prototype._create=function(){var label=document.createElement(\"div\");if(this.itemSet.options.groupEditable.order){label.className=\"vis-label draggable\"}else{label.className=\"vis-label\"}this.dom.label=label;var inner=document.createElement(\"div\");inner.className=\"vis-inner\";label.appendChild(inner);this.dom.inner=inner;var foreground=document.createElement(\"div\");foreground.className=\"vis-group\";foreground[\"timeline-group\"]=this;this.dom.foreground=foreground;this.dom.background=document.createElement(\"div\");this.dom.background.className=\"vis-group\";this.dom.axis=document.createElement(\"div\");this.dom.axis.className=\"vis-group\";this.dom.marker=document.createElement(\"div\");this.dom.marker.style.visibility=\"hidden\";this.dom.marker.style.position=\"absolute\";this.dom.marker.innerHTML=\"\";this.dom.background.appendChild(this.dom.marker)};Group.prototype.setData=function(data){var content;var templateFunction;if(this.itemSet.options&&this.itemSet.options.groupTemplate){templateFunction=this.itemSet.options.groupTemplate.bind(this);content=templateFunction(data,this.dom.inner)}else{content=data&&data.content}if(content instanceof Element){this.dom.inner.appendChild(content);while(this.dom.inner.firstChild){this.dom.inner.removeChild(this.dom.inner.firstChild)}this.dom.inner.appendChild(content)}else if(content instanceof Object){templateFunction(data,this.dom.inner)}else if(content!==undefined&&content!==null){this.dom.inner.innerHTML=content}else{this.dom.inner.innerHTML=this.groupId||\"\"}this.dom.label.title=data&&data.title||\"\";if(!this.dom.inner.firstChild){util.addClassName(this.dom.inner,\"vis-hidden\")}else{util.removeClassName(this.dom.inner,\"vis-hidden\")}if(data&&data.nestedGroups){if(!this.nestedGroups||this.nestedGroups!=data.nestedGroups){this.nestedGroups=data.nestedGroups}if(data.showNested!==undefined||this.showNested===undefined){if(data.showNested==false){this.showNested=false}else{this.showNested=true}}util.addClassName(this.dom.label,\"vis-nesting-group\");var collapsedDirClassName=this.itemSet.options.rtl?\"collapsed-rtl\":\"collapsed\";if(this.showNested){util.removeClassName(this.dom.label,collapsedDirClassName);util.addClassName(this.dom.label,\"expanded\")}else{util.removeClassName(this.dom.label,\"expanded\");util.addClassName(this.dom.label,collapsedDirClassName)}}else if(this.nestedGroups){this.nestedGroups=null;collapsedDirClassName=this.itemSet.options.rtl?\"collapsed-rtl\":\"collapsed\";util.removeClassName(this.dom.label,collapsedDirClassName);util.removeClassName(this.dom.label,\"expanded\");util.removeClassName(this.dom.label,\"vis-nesting-group\")}if(data&&data.nestedInGroup){util.addClassName(this.dom.label,\"vis-nested-group\");if(this.itemSet.options&&this.itemSet.options.rtl){this.dom.inner.style.paddingRight=\"30px\"}else{\nthis.dom.inner.style.paddingLeft=\"30px\"}}var className=data&&data.className||null;if(className!=this.className){if(this.className){util.removeClassName(this.dom.label,this.className);util.removeClassName(this.dom.foreground,this.className);util.removeClassName(this.dom.background,this.className);util.removeClassName(this.dom.axis,this.className)}util.addClassName(this.dom.label,className);util.addClassName(this.dom.foreground,className);util.addClassName(this.dom.background,className);util.addClassName(this.dom.axis,className);this.className=className}if(this.style){util.removeCssText(this.dom.label,this.style);this.style=null}if(data&&data.style){util.addCssText(this.dom.label,data.style);this.style=data.style}};Group.prototype.getLabelWidth=function(){return this.props.label.width};Group.prototype._didMarkerHeightChange=function(){var markerHeight=this.dom.marker.clientHeight;if(markerHeight!=this.lastMarkerHeight){this.lastMarkerHeight=markerHeight;var redrawQueue={};var redrawQueueLength=0;util.forEach(this.items,function(item,key){item.dirty=true;if(item.displayed){var returnQueue=true;redrawQueue[key]=item.redraw(returnQueue);redrawQueueLength=redrawQueue[key].length}});var needRedraw=redrawQueueLength>0;if(needRedraw){for(var i=0;i<redrawQueueLength;i++){util.forEach(redrawQueue,function(fns){fns[i]()})}}return true}};Group.prototype._calculateGroupSizeAndPosition=function(){var offsetTop=this.dom.foreground.offsetTop;var offsetLeft=this.dom.foreground.offsetLeft;var offsetWidth=this.dom.foreground.offsetWidth;this.top=offsetTop;this.right=offsetLeft;this.width=offsetWidth};Group.prototype._redrawItems=function(forceRestack,lastIsVisible,margin,range){var restack=forceRestack||this.stackDirty||this.isVisible&&!lastIsVisible;if(restack){var visibleSubgroups={};var subgroup=null;if(typeof this.itemSet.options.order===\"function\"){var me=this;var limitSize=false;var redrawQueue={};var redrawQueueLength=0;util.forEach(this.items,function(item,key){if(!item.displayed){var returnQueue=true;redrawQueue[key]=item.redraw(returnQueue);redrawQueueLength=redrawQueue[key].length;me.visibleItems.push(item)}});var needRedraw=redrawQueueLength>0;if(needRedraw){for(var i=0;i<redrawQueueLength;i++){util.forEach(redrawQueue,function(fns){fns[i]()})}}util.forEach(this.items,function(item){item.repositionX(limitSize)});if(this.doInnerStack&&this.itemSet.options.stackSubgroups){for(subgroup in this.subgroups){visibleSubgroups[subgroup]=this.subgroups[subgroup].items.slice().sort(function(a,b){return me.itemSet.options.order(a.data,b.data)})}stack.stackSubgroupsWithInnerStack(visibleSubgroups,margin,this.subgroups)}else{var customOrderedItems=this.orderedItems.byStart.slice().sort(function(a,b){return me.itemSet.options.order(a.data,b.data)});stack.stack(customOrderedItems,margin,true)}this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,range)}else{this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,range);if(this.itemSet.options.stack){if(this.doInnerStack&&this.itemSet.options.stackSubgroups){for(subgroup in this.subgroups){visibleSubgroups[subgroup]=this.subgroups[subgroup].items}stack.stackSubgroupsWithInnerStack(visibleSubgroups,margin,this.subgroups)}else{stack.stack(this.visibleItems,margin,true)}}else{stack.nostack(this.visibleItems,margin,this.subgroups,this.itemSet.options.stackSubgroups)}}this.stackDirty=false}};Group.prototype._didResize=function(resized,height){resized=util.updateProperty(this,\"height\",height)||resized;var labelWidth=this.dom.inner.clientWidth;var labelHeight=this.dom.inner.clientHeight;resized=util.updateProperty(this.props.label,\"width\",labelWidth)||resized;resized=util.updateProperty(this.props.label,\"height\",labelHeight)||resized;return resized};Group.prototype._applyGroupHeight=function(height){this.dom.background.style.height=height+\"px\";this.dom.foreground.style.height=height+\"px\";this.dom.label.style.height=height+\"px\"};Group.prototype._updateItemsVerticalPosition=function(margin){for(var i=0,ii=this.visibleItems.length;i<ii;i++){var item=this.visibleItems[i];item.repositionY(margin);if(!this.isVisible&&this.groupId!=\"__background__\"){if(item.displayed)item.hide()}}};Group.prototype.redraw=function(range,margin,forceRestack,returnQueue){var resized=false;var lastIsVisible=this.isVisible;var height;var queue=[function(){forceRestack=this._didMarkerHeightChange.bind(this)}.bind(this),this._updateSubGroupHeights.bind(this,margin),this._calculateGroupSizeAndPosition.bind(this),function(){this.isVisible=this._isGroupVisible.bind(this)(range,margin)}.bind(this),function(){this._redrawItems.bind(this)(forceRestack,lastIsVisible,margin,range)}.bind(this),this._updateSubgroupsSizes.bind(this),function(){height=this._calculateHeight.bind(this)(margin)}.bind(this),this._calculateGroupSizeAndPosition.bind(this),function(){resized=this._didResize.bind(this)(resized,height)}.bind(this),function(){this._applyGroupHeight.bind(this)(height)}.bind(this),function(){this._updateItemsVerticalPosition.bind(this)(margin)}.bind(this),function(){if(!this.isVisible&&this.height){resized=false}return resized}];if(returnQueue){return queue}else{var result;queue.forEach(function(fn){result=fn()});return result}};Group.prototype._updateSubGroupHeights=function(margin){if((0,_keys2[\"default\"])(this.subgroups).length>0){var me=this;this.resetSubgroups();util.forEach(this.visibleItems,function(item){if(item.data.subgroup!==undefined){me.subgroups[item.data.subgroup].height=Math.max(me.subgroups[item.data.subgroup].height,item.height+margin.item.vertical);me.subgroups[item.data.subgroup].visible=true}})}};Group.prototype._isGroupVisible=function(range,margin){return this.top<=range.body.domProps.centerContainer.height-range.body.domProps.scrollTop+margin.axis&&this.top+this.height+margin.axis>=-range.body.domProps.scrollTop};Group.prototype._calculateHeight=function(margin){var height;var itemsInRange=this.visibleItems;if(itemsInRange.length>0){var min=itemsInRange[0].top;var max=itemsInRange[0].top+itemsInRange[0].height;util.forEach(itemsInRange,function(item){min=Math.min(min,item.top);max=Math.max(max,item.top+item.height)});if(min>margin.axis){var offset=min-margin.axis;max-=offset;util.forEach(itemsInRange,function(item){item.top-=offset})}height=max+margin.item.vertical/2}else{height=0}height=Math.max(height,this.props.label.height);return height};Group.prototype.show=function(){if(!this.dom.label.parentNode){this.itemSet.dom.labelSet.appendChild(this.dom.label)}if(!this.dom.foreground.parentNode){this.itemSet.dom.foreground.appendChild(this.dom.foreground)}if(!this.dom.background.parentNode){this.itemSet.dom.background.appendChild(this.dom.background)}if(!this.dom.axis.parentNode){this.itemSet.dom.axis.appendChild(this.dom.axis)}};Group.prototype.hide=function(){var label=this.dom.label;if(label.parentNode){label.parentNode.removeChild(label)}var foreground=this.dom.foreground;if(foreground.parentNode){foreground.parentNode.removeChild(foreground)}var background=this.dom.background;if(background.parentNode){background.parentNode.removeChild(background)}var axis=this.dom.axis;if(axis.parentNode){axis.parentNode.removeChild(axis)}};Group.prototype.add=function(item){this.items[item.id]=item;item.setParent(this);this.stackDirty=true;if(item.data.subgroup!==undefined){this._addToSubgroup(item);this.orderSubgroups()}if(this.visibleItems.indexOf(item)==-1){var range=this.itemSet.body.range;this._checkIfVisible(item,this.visibleItems,range)}};Group.prototype._addToSubgroup=function(item,subgroupId){subgroupId=subgroupId||item.data.subgroup;if(subgroupId!=undefined&&this.subgroups[subgroupId]===undefined){this.subgroups[subgroupId]={height:0,top:0,start:item.data.start,end:item.data.end||item.data.start,visible:false,index:this.subgroupIndex,items:[],stack:this.subgroupStackAll||this.subgroupStack[subgroupId]||false};this.subgroupIndex++}if(new Date(item.data.start)<new Date(this.subgroups[subgroupId].start)){this.subgroups[subgroupId].start=item.data.start}var itemEnd=item.data.end||item.data.start;if(new Date(itemEnd)>new Date(this.subgroups[subgroupId].end)){this.subgroups[subgroupId].end=itemEnd}this.subgroups[subgroupId].items.push(item)};Group.prototype._updateSubgroupsSizes=function(){var me=this;if(me.subgroups){for(var subgroup in me.subgroups){var initialEnd=me.subgroups[subgroup].items[0].data.end||me.subgroups[subgroup].items[0].data.start;var newStart=me.subgroups[subgroup].items[0].data.start;var newEnd=initialEnd-1;me.subgroups[subgroup].items.forEach(function(item){if(new Date(item.data.start)<new Date(newStart)){newStart=item.data.start}var itemEnd=item.data.end||item.data.start;if(new Date(itemEnd)>new Date(newEnd)){newEnd=itemEnd}});me.subgroups[subgroup].start=newStart;me.subgroups[subgroup].end=new Date(newEnd-1)}}};Group.prototype.orderSubgroups=function(){if(this.subgroupOrderer!==undefined){var sortArray=[];var subgroup;if(typeof this.subgroupOrderer==\"string\"){for(subgroup in this.subgroups){sortArray.push({subgroup:subgroup,sortField:this.subgroups[subgroup].items[0].data[this.subgroupOrderer]})}sortArray.sort(function(a,b){return a.sortField-b.sortField})}else if(typeof this.subgroupOrderer==\"function\"){for(subgroup in this.subgroups){sortArray.push(this.subgroups[subgroup].items[0].data)}sortArray.sort(this.subgroupOrderer)}if(sortArray.length>0){for(var i=0;i<sortArray.length;i++){this.subgroups[sortArray[i].subgroup].index=i}}}};Group.prototype.resetSubgroups=function(){for(var subgroup in this.subgroups){if(this.subgroups.hasOwnProperty(subgroup)){this.subgroups[subgroup].visible=false;this.subgroups[subgroup].height=0}}};Group.prototype.remove=function(item){delete this.items[item.id];item.setParent(null);this.stackDirty=true;var index=this.visibleItems.indexOf(item);if(index!=-1)this.visibleItems.splice(index,1);if(item.data.subgroup!==undefined){this._removeFromSubgroup(item);this.orderSubgroups()}};Group.prototype._removeFromSubgroup=function(item,subgroupId){subgroupId=subgroupId||item.data.subgroup;if(subgroupId!=undefined){var subgroup=this.subgroups[subgroupId];if(subgroup){var itemIndex=subgroup.items.indexOf(item);if(itemIndex>=0){subgroup.items.splice(itemIndex,1);if(!subgroup.items.length){delete this.subgroups[subgroupId]}else{this._updateSubgroupsSizes()}}}}};Group.prototype.removeFromDataSet=function(item){this.itemSet.removeItem(item.id)};Group.prototype.order=function(){var array=util.toArray(this.items);var startArray=[];var endArray=[];for(var i=0;i<array.length;i++){if(array[i].data.end!==undefined){endArray.push(array[i])}startArray.push(array[i])}this.orderedItems={byStart:startArray,byEnd:endArray};stack.orderByStart(this.orderedItems.byStart);stack.orderByEnd(this.orderedItems.byEnd)};Group.prototype._updateItemsInRange=function(orderedItems,oldVisibleItems,range){var visibleItems=[];var visibleItemsLookup={};var interval=(range.end-range.start)/4;var lowerBound=range.start-interval;var upperBound=range.end+interval;var searchFunction=function searchFunction(value){if(value<lowerBound){return-1}else if(value<=upperBound){return 0}else{return 1}};if(oldVisibleItems.length>0){for(var i=0;i<oldVisibleItems.length;i++){this._checkIfVisibleWithReference(oldVisibleItems[i],visibleItems,visibleItemsLookup,range)}}var initialPosByStart=util.binarySearchCustom(orderedItems.byStart,searchFunction,\"data\",\"start\");this._traceVisible(initialPosByStart,orderedItems.byStart,visibleItems,visibleItemsLookup,function(item){return item.data.start<lowerBound||item.data.start>upperBound});if(this.checkRangedItems==true){this.checkRangedItems=false;for(i=0;i<orderedItems.byEnd.length;i++){this._checkIfVisibleWithReference(orderedItems.byEnd[i],visibleItems,visibleItemsLookup,range)}}else{var initialPosByEnd=util.binarySearchCustom(orderedItems.byEnd,searchFunction,\"data\",\"end\");this._traceVisible(initialPosByEnd,orderedItems.byEnd,visibleItems,visibleItemsLookup,function(item){return item.data.end<lowerBound||item.data.end>upperBound})}var redrawQueue={};var redrawQueueLength=0;for(i=0;i<visibleItems.length;i++){var item=visibleItems[i];if(!item.displayed){var returnQueue=true;redrawQueue[i]=item.redraw(returnQueue);redrawQueueLength=redrawQueue[i].length}}var needRedraw=redrawQueueLength>0;if(needRedraw){for(var j=0;j<redrawQueueLength;j++){util.forEach(redrawQueue,function(fns){fns[j]()})}}for(i=0;i<visibleItems.length;i++){visibleItems[i].repositionX()}return visibleItems};Group.prototype._traceVisible=function(initialPos,items,visibleItems,visibleItemsLookup,breakCondition){if(initialPos!=-1){var i,item;for(i=initialPos;i>=0;i--){item=items[i];if(breakCondition(item)){break}else{if(visibleItemsLookup[item.id]===undefined){visibleItemsLookup[item.id]=true;visibleItems.push(item)}}}for(i=initialPos+1;i<items.length;i++){item=items[i];if(breakCondition(item)){break}else{if(visibleItemsLookup[item.id]===undefined){visibleItemsLookup[item.id]=true;visibleItems.push(item)}}}}};Group.prototype._checkIfVisible=function(item,visibleItems,range){if(item.isVisible(range)){if(!item.displayed)item.show();item.repositionX();visibleItems.push(item)}else{if(item.displayed)item.hide()}};Group.prototype._checkIfVisibleWithReference=function(item,visibleItems,visibleItemsLookup,range){if(item.isVisible(range)){if(visibleItemsLookup[item.id]===undefined){visibleItemsLookup[item.id]=true;visibleItems.push(item)}}else{if(item.displayed)item.hide()}};Group.prototype.changeSubgroup=function(item,oldSubgroup,newSubgroup){this._removeFromSubgroup(item,oldSubgroup);this._addToSubgroup(item,newSubgroup);this.orderSubgroups()};module.exports=Group},function(module,exports,__webpack_require__){\"use strict\";var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Group=__webpack_require__(68);function BackgroundGroup(groupId,data,itemSet){Group.call(this,groupId,data,itemSet);this.width=0;this.height=0;this.top=0;this.left=0}BackgroundGroup.prototype=(0,_create2[\"default\"])(Group.prototype);BackgroundGroup.prototype.redraw=function(range,margin,forceRestack){var resized=false;this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,range);this.width=this.dom.background.offsetWidth;this.dom.background.style.height=\"0\";for(var i=0,ii=this.visibleItems.length;i<ii;i++){var item=this.visibleItems[i];item.repositionY(margin)}return resized};BackgroundGroup.prototype.show=function(){if(!this.dom.background.parentNode){this.itemSet.dom.background.appendChild(this.dom.background)}};module.exports=BackgroundGroup},function(module,exports,__webpack_require__){\"use strict\";var Item=__webpack_require__(38);function RangeItem(data,conversion,options){this.props={content:{width:0}};this.overflow=false;this.options=options;if(data){if(data.start==undefined){throw new Error('Property \"start\" missing in item '+data.id)}if(data.end==undefined){throw new Error('Property \"end\" missing in item '+data.id)}}Item.call(this,data,conversion,options)}RangeItem.prototype=new Item(null,null,null);RangeItem.prototype.baseClassName=\"vis-item vis-range\";RangeItem.prototype.isVisible=function(range){return this.data.start<range.end&&this.data.end>range.start};RangeItem.prototype._createDomElement=function(){if(!this.dom){this.dom={};this.dom.box=document.createElement(\"div\");this.dom.frame=document.createElement(\"div\");this.dom.frame.className=\"vis-item-overflow\";this.dom.box.appendChild(this.dom.frame);this.dom.visibleFrame=document.createElement(\"div\");this.dom.visibleFrame.className=\"vis-item-visible-frame\";this.dom.box.appendChild(this.dom.visibleFrame);this.dom.content=document.createElement(\"div\");this.dom.content.className=\"vis-item-content\";this.dom.frame.appendChild(this.dom.content);this.dom.box[\"timeline-item\"]=this;this.dirty=true}};RangeItem.prototype._appendDomElement=function(){if(!this.parent){throw new Error(\"Cannot redraw item: no parent attached\")}if(!this.dom.box.parentNode){var foreground=this.parent.dom.foreground;if(!foreground){throw new Error(\"Cannot redraw item: parent has no foreground container element\")}foreground.appendChild(this.dom.box)}this.displayed=true};RangeItem.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content);this._updateDataAttributes(this.dom.box);this._updateStyle(this.dom.box);var editable=this.editable.updateTime||this.editable.updateGroup;var className=(this.data.className?\" \"+this.data.className:\"\")+(this.selected?\" vis-selected\":\"\")+(editable?\" vis-editable\":\" vis-readonly\");this.dom.box.className=this.baseClassName+className;this.dom.content.style.maxWidth=\"none\"}};RangeItem.prototype._getDomComponentsSizes=function(){this.overflow=window.getComputedStyle(this.dom.frame).overflow!==\"hidden\";return{content:{width:this.dom.content.offsetWidth},box:{height:this.dom.box.offsetHeight}}};RangeItem.prototype._updateDomComponentsSizes=function(sizes){this.props.content.width=sizes.content.width;this.height=sizes.box.height;this.dom.content.style.maxWidth=\"\";this.dirty=false};RangeItem.prototype._repaintDomAdditionals=function(){this._repaintOnItemUpdateTimeTooltip(this.dom.box);this._repaintDeleteButton(this.dom.box);this._repaintDragCenter();this._repaintDragLeft();this._repaintDragRight()};RangeItem.prototype.redraw=function(returnQueue){var sizes;var queue=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){if(this.dirty){sizes=this._getDomComponentsSizes.bind(this)()}}.bind(this),function(){if(this.dirty){this._updateDomComponentsSizes.bind(this)(sizes)}}.bind(this),this._repaintDomAdditionals.bind(this)];if(returnQueue){return queue}else{var result;queue.forEach(function(fn){result=fn()});return result}};RangeItem.prototype.show=function(){if(!this.displayed){this.redraw()}};RangeItem.prototype.hide=function(){if(this.displayed){var box=this.dom.box;if(box.parentNode){box.parentNode.removeChild(box)}this.displayed=false}};RangeItem.prototype.repositionX=function(limitSize){var parentWidth=this.parent.width;var start=this.conversion.toScreen(this.data.start);var end=this.conversion.toScreen(this.data.end);var align=this.data.align===undefined?this.options.align:this.data.align;var contentStartPosition;var contentWidth;if(this.data.limitSize!==false&&(limitSize===undefined||limitSize===true)){if(start<-parentWidth){start=-parentWidth}if(end>2*parentWidth){end=2*parentWidth}}var boxWidth=Math.max(end-start+.5,1);if(this.overflow){if(this.options.rtl){this.right=start}else{this.left=start}this.width=boxWidth+this.props.content.width;contentWidth=this.props.content.width}else{if(this.options.rtl){this.right=start}else{this.left=start}this.width=boxWidth;contentWidth=Math.min(end-start,this.props.content.width)}if(this.options.rtl){this.dom.box.style.right=this.right+\"px\"}else{this.dom.box.style.left=this.left+\"px\"}this.dom.box.style.width=boxWidth+\"px\";switch(align){case\"left\":if(this.options.rtl){this.dom.content.style.right=\"0\"}else{this.dom.content.style.left=\"0\"}break;case\"right\":if(this.options.rtl){this.dom.content.style.right=Math.max(boxWidth-contentWidth,0)+\"px\"}else{this.dom.content.style.left=Math.max(boxWidth-contentWidth,0)+\"px\"}break;case\"center\":if(this.options.rtl){this.dom.content.style.right=Math.max((boxWidth-contentWidth)/2,0)+\"px\"}else{this.dom.content.style.left=Math.max((boxWidth-contentWidth)/2,0)+\"px\"}break;default:if(this.overflow){if(end>0){contentStartPosition=Math.max(-start,0)}else{contentStartPosition=-contentWidth}}else{if(start<0){contentStartPosition=-start}else{contentStartPosition=0}}if(this.options.rtl){this.dom.content.style.right=contentStartPosition+\"px\"}else{this.dom.content.style.left=contentStartPosition+\"px\";this.dom.content.style.width=\"calc(100% - \"+contentStartPosition+\"px)\"}}};RangeItem.prototype.repositionY=function(){var orientation=this.options.orientation.item;var box=this.dom.box;if(orientation==\"top\"){box.style.top=this.top+\"px\"}else{box.style.top=this.parent.height-this.top-this.height+\"px\"}};RangeItem.prototype._repaintDragLeft=function(){if((this.selected||this.options.itemsAlwaysDraggable.range)&&this.options.editable.updateTime&&!this.dom.dragLeft){var dragLeft=document.createElement(\"div\");dragLeft.className=\"vis-drag-left\";dragLeft.dragLeftItem=this;this.dom.box.appendChild(dragLeft);this.dom.dragLeft=dragLeft}else if(!this.selected&&!this.options.itemsAlwaysDraggable.range&&this.dom.dragLeft){if(this.dom.dragLeft.parentNode){this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft)}this.dom.dragLeft=null}};RangeItem.prototype._repaintDragRight=function(){if((this.selected||this.options.itemsAlwaysDraggable.range)&&this.options.editable.updateTime&&!this.dom.dragRight){var dragRight=document.createElement(\"div\");dragRight.className=\"vis-drag-right\";dragRight.dragRightItem=this;this.dom.box.appendChild(dragRight);this.dom.dragRight=dragRight}else if(!this.selected&&!this.options.itemsAlwaysDraggable.range&&this.dom.dragRight){if(this.dom.dragRight.parentNode){this.dom.dragRight.parentNode.removeChild(this.dom.dragRight)}this.dom.dragRight=null}};module.exports=RangeItem},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var ColorPicker=__webpack_require__(179)[\"default\"];var Configurator=function(){function Configurator(parentModule,defaultContainer,configureOptions){var pixelRatio=arguments.length>3&&arguments[3]!==undefined?arguments[3]:1;(0,_classCallCheck3[\"default\"])(this,Configurator);this.parent=parentModule;this.changedOptions=[];this.container=defaultContainer;this.allowCreation=false;this.options={};this.initialized=false;this.popupCounter=0;this.defaultOptions={enabled:false,filter:true,container:undefined,showButton:true};util.extend(this.options,this.defaultOptions);this.configureOptions=configureOptions;this.moduleOptions={};this.domElements=[];this.popupDiv={};this.popupLimit=5;this.popupHistory={};this.colorPicker=new ColorPicker(pixelRatio);this.wrapper=undefined}(0,_createClass3[\"default\"])(Configurator,[{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){this.popupHistory={};this._removePopup();var enabled=true;if(typeof options===\"string\"){this.options.filter=options}else if(options instanceof Array){this.options.filter=options.join()}else if((typeof options===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(options))===\"object\"){if(options.container!==undefined){this.options.container=options.container}if(options.filter!==undefined){this.options.filter=options.filter}if(options.showButton!==undefined){this.options.showButton=options.showButton}if(options.enabled!==undefined){enabled=options.enabled}}else if(typeof options===\"boolean\"){this.options.filter=true;enabled=options}else if(typeof options===\"function\"){this.options.filter=options;enabled=true}if(this.options.filter===false){enabled=false}this.options.enabled=enabled}this._clean()}},{key:\"setModuleOptions\",value:function setModuleOptions(moduleOptions){this.moduleOptions=moduleOptions;if(this.options.enabled===true){this._clean();if(this.options.container!==undefined){this.container=this.options.container}this._create()}}},{key:\"_create\",value:function _create(){var _this=this;this._clean();this.changedOptions=[];var filter=this.options.filter;var counter=0;var show=false;for(var option in this.configureOptions){if(this.configureOptions.hasOwnProperty(option)){this.allowCreation=false;show=false;if(typeof filter===\"function\"){show=filter(option,[]);show=show||this._handleObject(this.configureOptions[option],[option],true)}else if(filter===true||filter.indexOf(option)!==-1){show=true}if(show!==false){this.allowCreation=true;if(counter>0){this._makeItem([])}this._makeHeader(option);this._handleObject(this.configureOptions[option],[option])}counter++}}if(this.options.showButton===true){var generateButton=document.createElement(\"div\");generateButton.className=\"vis-configuration vis-config-button\";generateButton.innerHTML=\"generate options\";generateButton.onclick=function(){_this._printOptions()};generateButton.onmouseover=function(){generateButton.className=\"vis-configuration vis-config-button hover\"};generateButton.onmouseout=function(){generateButton.className=\"vis-configuration vis-config-button\"};this.optionsContainer=document.createElement(\"div\");this.optionsContainer.className=\"vis-configuration vis-config-option-container\";this.domElements.push(this.optionsContainer);this.domElements.push(generateButton)}this._push()}},{key:\"_push\",value:function _push(){this.wrapper=document.createElement(\"div\");this.wrapper.className=\"vis-configuration-wrapper\";this.container.appendChild(this.wrapper);for(var i=0;i<this.domElements.length;i++){this.wrapper.appendChild(this.domElements[i])}this._showPopupIfNeeded()}},{key:\"_clean\",value:function _clean(){for(var i=0;i<this.domElements.length;i++){this.wrapper.removeChild(this.domElements[i])}if(this.wrapper!==undefined){this.container.removeChild(this.wrapper);this.wrapper=undefined}this.domElements=[];this._removePopup()}},{key:\"_getValue\",value:function _getValue(path){var base=this.moduleOptions;for(var i=0;i<path.length;i++){if(base[path[i]]!==undefined){base=base[path[i]]}else{base=undefined;break}}return base}},{key:\"_makeItem\",value:function _makeItem(path){if(this.allowCreation===true){var item=document.createElement(\"div\");item.className=\"vis-configuration vis-config-item vis-config-s\"+path.length;for(var _len=arguments.length,domElements=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){domElements[_key-1]=arguments[_key]}domElements.forEach(function(element){item.appendChild(element)});this.domElements.push(item);return this.domElements.length}return 0}},{key:\"_makeHeader\",value:function _makeHeader(name){var div=document.createElement(\"div\");div.className=\"vis-configuration vis-config-header\";div.innerHTML=name;this._makeItem([],div)}},{key:\"_makeLabel\",value:function _makeLabel(name,path){var objectLabel=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var div=document.createElement(\"div\");div.className=\"vis-configuration vis-config-label vis-config-s\"+path.length;if(objectLabel===true){div.innerHTML=\"<i><b>\"+name+\":</b></i>\"}else{div.innerHTML=name+\":\"}return div}},{key:\"_makeDropdown\",value:function _makeDropdown(arr,value,path){var select=document.createElement(\"select\");select.className=\"vis-configuration vis-config-select\";var selectedValue=0;if(value!==undefined){if(arr.indexOf(value)!==-1){selectedValue=arr.indexOf(value)}}for(var i=0;i<arr.length;i++){var option=document.createElement(\"option\");option.value=arr[i];if(i===selectedValue){option.selected=\"selected\"}option.innerHTML=arr[i];select.appendChild(option)}var me=this;select.onchange=function(){me._update(this.value,path)};var label=this._makeLabel(path[path.length-1],path);this._makeItem(path,label,select)}},{key:\"_makeRange\",value:function _makeRange(arr,value,path){var defaultValue=arr[0];var min=arr[1];var max=arr[2];var step=arr[3];var range=document.createElement(\"input\");range.className=\"vis-configuration vis-config-range\";try{range.type=\"range\";range.min=min;range.max=max}catch(err){}range.step=step;var popupString=\"\";var popupValue=0;if(value!==undefined){var factor=1.2;if(value<0&&value*factor<min){range.min=Math.ceil(value*factor);popupValue=range.min;popupString=\"range increased\"}else if(value/factor<min){range.min=Math.ceil(value/factor);popupValue=range.min;popupString=\"range increased\"}if(value*factor>max&&max!==1){range.max=Math.ceil(value*factor);popupValue=range.max;popupString=\"range increased\"}range.value=value}else{range.value=defaultValue}var input=document.createElement(\"input\");input.className=\"vis-configuration vis-config-rangeinput\";input.value=range.value;var me=this;range.onchange=function(){input.value=this.value;me._update(Number(this.value),path)};range.oninput=function(){input.value=this.value};var label=this._makeLabel(path[path.length-1],path);var itemIndex=this._makeItem(path,label,range,input);if(popupString!==\"\"&&this.popupHistory[itemIndex]!==popupValue){this.popupHistory[itemIndex]=popupValue;this._setupPopup(popupString,itemIndex)}}},{key:\"_setupPopup\",value:function _setupPopup(string,index){var _this2=this;if(this.initialized===true&&this.allowCreation===true&&this.popupCounter<this.popupLimit){var div=document.createElement(\"div\");div.id=\"vis-configuration-popup\";div.className=\"vis-configuration-popup\";div.innerHTML=string;div.onclick=function(){_this2._removePopup()};this.popupCounter+=1;this.popupDiv={html:div,index:index}}}},{key:\"_removePopup\",value:function _removePopup(){if(this.popupDiv.html!==undefined){this.popupDiv.html.parentNode.removeChild(this.popupDiv.html);clearTimeout(this.popupDiv.hideTimeout);clearTimeout(this.popupDiv.deleteTimeout);this.popupDiv={}}}},{key:\"_showPopupIfNeeded\",value:function _showPopupIfNeeded(){var _this3=this;if(this.popupDiv.html!==undefined){var correspondingElement=this.domElements[this.popupDiv.index];var rect=correspondingElement.getBoundingClientRect();this.popupDiv.html.style.left=rect.left+\"px\";this.popupDiv.html.style.top=rect.top-30+\"px\";document.body.appendChild(this.popupDiv.html);this.popupDiv.hideTimeout=setTimeout(function(){_this3.popupDiv.html.style.opacity=0},1500);this.popupDiv.deleteTimeout=setTimeout(function(){_this3._removePopup()},1800)}}},{key:\"_makeCheckbox\",value:function _makeCheckbox(defaultValue,value,path){var checkbox=document.createElement(\"input\");checkbox.type=\"checkbox\";checkbox.className=\"vis-configuration vis-config-checkbox\";checkbox.checked=defaultValue;if(value!==undefined){checkbox.checked=value;if(value!==defaultValue){if((typeof defaultValue===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(defaultValue))===\"object\"){if(value!==defaultValue.enabled){this.changedOptions.push({path:path,value:value})}}else{this.changedOptions.push({path:path,value:value})}}}var me=this;checkbox.onchange=function(){me._update(this.checked,path)};var label=this._makeLabel(path[path.length-1],path);this._makeItem(path,label,checkbox)}},{key:\"_makeTextInput\",value:function _makeTextInput(defaultValue,value,path){var checkbox=document.createElement(\"input\");checkbox.type=\"text\";checkbox.className=\"vis-configuration vis-config-text\";checkbox.value=value;if(value!==defaultValue){this.changedOptions.push({path:path,value:value})}var me=this;checkbox.onchange=function(){me._update(this.value,path)};var label=this._makeLabel(path[path.length-1],path);this._makeItem(path,label,checkbox)}},{key:\"_makeColorField\",value:function _makeColorField(arr,value,path){var _this4=this;var defaultColor=arr[1];var div=document.createElement(\"div\");value=value===undefined?defaultColor:value;if(value!==\"none\"){div.className=\"vis-configuration vis-config-colorBlock\";div.style.backgroundColor=value}else{div.className=\"vis-configuration vis-config-colorBlock none\"}value=value===undefined?defaultColor:value;div.onclick=function(){_this4._showColorPicker(value,div,path)};var label=this._makeLabel(path[path.length-1],path);this._makeItem(path,label,div)}},{key:\"_showColorPicker\",value:function _showColorPicker(value,div,path){var _this5=this;div.onclick=function(){};this.colorPicker.insertTo(div);this.colorPicker.show();this.colorPicker.setColor(value);this.colorPicker.setUpdateCallback(function(color){\nvar colorString=\"rgba(\"+color.r+\",\"+color.g+\",\"+color.b+\",\"+color.a+\")\";div.style.backgroundColor=colorString;_this5._update(colorString,path)});this.colorPicker.setCloseCallback(function(){div.onclick=function(){_this5._showColorPicker(value,div,path)}})}},{key:\"_handleObject\",value:function _handleObject(obj){var path=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var checkOnly=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var show=false;var filter=this.options.filter;var visibleInSet=false;for(var subObj in obj){if(obj.hasOwnProperty(subObj)){show=true;var item=obj[subObj];var newPath=util.copyAndExtendArray(path,subObj);if(typeof filter===\"function\"){show=filter(subObj,path);if(show===false){if(!(item instanceof Array)&&typeof item!==\"string\"&&typeof item!==\"boolean\"&&item instanceof Object){this.allowCreation=false;show=this._handleObject(item,newPath,true);this.allowCreation=checkOnly===false}}}if(show!==false){visibleInSet=true;var value=this._getValue(newPath);if(item instanceof Array){this._handleArray(item,value,newPath)}else if(typeof item===\"string\"){this._makeTextInput(item,value,newPath)}else if(typeof item===\"boolean\"){this._makeCheckbox(item,value,newPath)}else if(item instanceof Object){var draw=true;if(path.indexOf(\"physics\")!==-1){if(this.moduleOptions.physics.solver!==subObj){draw=false}}if(draw===true){if(item.enabled!==undefined){var enabledPath=util.copyAndExtendArray(newPath,\"enabled\");var enabledValue=this._getValue(enabledPath);if(enabledValue===true){var label=this._makeLabel(subObj,newPath,true);this._makeItem(newPath,label);visibleInSet=this._handleObject(item,newPath)||visibleInSet}else{this._makeCheckbox(item,enabledValue,newPath)}}else{var _label=this._makeLabel(subObj,newPath,true);this._makeItem(newPath,_label);visibleInSet=this._handleObject(item,newPath)||visibleInSet}}}else{console.error(\"dont know how to handle\",item,subObj,newPath)}}}}return visibleInSet}},{key:\"_handleArray\",value:function _handleArray(arr,value,path){if(typeof arr[0]===\"string\"&&arr[0]===\"color\"){this._makeColorField(arr,value,path);if(arr[1]!==value){this.changedOptions.push({path:path,value:value})}}else if(typeof arr[0]===\"string\"){this._makeDropdown(arr,value,path);if(arr[0]!==value){this.changedOptions.push({path:path,value:value})}}else if(typeof arr[0]===\"number\"){this._makeRange(arr,value,path);if(arr[0]!==value){this.changedOptions.push({path:path,value:Number(value)})}}}},{key:\"_update\",value:function _update(value,path){var options=this._constructOptions(value,path);if(this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit){this.parent.body.emitter.emit(\"configChange\",options)}this.initialized=true;this.parent.setOptions(options)}},{key:\"_constructOptions\",value:function _constructOptions(value,path){var optionsObj=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var pointer=optionsObj;value=value===\"true\"?true:value;value=value===\"false\"?false:value;for(var i=0;i<path.length;i++){if(path[i]!==\"global\"){if(pointer[path[i]]===undefined){pointer[path[i]]={}}if(i!==path.length-1){pointer=pointer[path[i]]}else{pointer[path[i]]=value}}}return optionsObj}},{key:\"_printOptions\",value:function _printOptions(){var options=this.getOptions();this.optionsContainer.innerHTML=\"<pre>var options = \"+(0,_stringify2[\"default\"])(options,null,2)+\"</pre>\"}},{key:\"getOptions\",value:function getOptions(){var options={};for(var i=0;i<this.changedOptions.length;i++){this._constructOptions(this.changedOptions[i].value,this.changedOptions[i].path,options)}return options}}]);return Configurator}();exports[\"default\"]=Configurator},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var DOMutil=__webpack_require__(14);function Points(groupId,options){}Points.draw=function(dataset,group,framework,offset){offset=offset||0;var callback=getCallback(framework,group);for(var i=0;i<dataset.length;i++){if(!callback){DOMutil.drawPoint(dataset[i].screen_x+offset,dataset[i].screen_y,getGroupTemplate(group),framework.svgElements,framework.svg,dataset[i].label)}else{var callbackResult=callback(dataset[i],group);if(callbackResult===true||(typeof callbackResult===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(callbackResult))===\"object\"){DOMutil.drawPoint(dataset[i].screen_x+offset,dataset[i].screen_y,getGroupTemplate(group,callbackResult),framework.svgElements,framework.svg,dataset[i].label)}}}};Points.drawIcon=function(group,x,y,iconWidth,iconHeight,framework){var fillHeight=iconHeight*.5;var outline=DOMutil.getSVGElement(\"rect\",framework.svgElements,framework.svg);outline.setAttributeNS(null,\"x\",x);outline.setAttributeNS(null,\"y\",y-fillHeight);outline.setAttributeNS(null,\"width\",iconWidth);outline.setAttributeNS(null,\"height\",2*fillHeight);outline.setAttributeNS(null,\"class\",\"vis-outline\");DOMutil.drawPoint(x+.5*iconWidth,y,getGroupTemplate(group),framework.svgElements,framework.svg)};function getGroupTemplate(group,callbackResult){callbackResult=typeof callbackResult===\"undefined\"?{}:callbackResult;return{style:callbackResult.style||group.options.drawPoints.style,styles:callbackResult.styles||group.options.drawPoints.styles,size:callbackResult.size||group.options.drawPoints.size,className:callbackResult.className||group.className}}function getCallback(framework,group){var callback=undefined;if(framework.options&&framework.options.drawPoints&&framework.options.drawPoints.onRender&&typeof framework.options.drawPoints.onRender==\"function\"){callback=framework.options.drawPoints.onRender}if(group.group.options&&group.group.options.drawPoints&&group.group.options.drawPoints.onRender&&typeof group.group.options.drawPoints.onRender==\"function\"){callback=group.group.options.drawPoints.onRender}return callback}module.exports=Points},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CircleImageBase=function(_NodeBase){(0,_inherits3[\"default\"])(CircleImageBase,_NodeBase);function CircleImageBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,CircleImageBase);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(CircleImageBase.__proto__||(0,_getPrototypeOf2[\"default\"])(CircleImageBase)).call(this,options,body,labelModule));_this.labelOffset=0;_this.selected=false;return _this}(0,_createClass3[\"default\"])(CircleImageBase,[{key:\"setOptions\",value:function setOptions(options,imageObj,imageObjAlt){this.options=options;if(!(imageObj===undefined&&imageObjAlt===undefined)){this.setImages(imageObj,imageObjAlt)}}},{key:\"setImages\",value:function setImages(imageObj,imageObjAlt){if(imageObjAlt&&this.selected){this.imageObj=imageObjAlt;this.imageObjAlt=imageObj}else{this.imageObj=imageObj;this.imageObjAlt=imageObjAlt}}},{key:\"switchImages\",value:function switchImages(selected){var selection_changed=selected&&!this.selected||!selected&&this.selected;this.selected=selected;if(this.imageObjAlt!==undefined&&selection_changed){var imageTmp=this.imageObj;this.imageObj=this.imageObjAlt;this.imageObjAlt=imageTmp}}},{key:\"_resizeImage\",value:function _resizeImage(){var width,height;if(this.options.shapeProperties.useImageSize===false){var ratio_width=1;var ratio_height=1;if(this.imageObj.width&&this.imageObj.height){if(this.imageObj.width>this.imageObj.height){ratio_width=this.imageObj.width/this.imageObj.height}else{ratio_height=this.imageObj.height/this.imageObj.width}}width=this.options.size*2*ratio_width;height=this.options.size*2*ratio_height}else{width=this.imageObj.width;height=this.imageObj.height}this.width=width;this.height=height;this.radius=.5*this.width}},{key:\"_drawRawCircle\",value:function _drawRawCircle(ctx,x,y,values){this.initContextForDraw(ctx,values);ctx.circle(x,y,values.size);this.performFill(ctx,values)}},{key:\"_drawImageAtPosition\",value:function _drawImageAtPosition(ctx,values){if(this.imageObj.width!=0){ctx.globalAlpha=1;this.enableShadow(ctx,values);var factor=1;if(this.options.shapeProperties.interpolation===true){factor=this.imageObj.width/this.width/this.body.view.scale}this.imageObj.drawImageAtPosition(ctx,factor,this.left,this.top,this.width,this.height);this.disableShadow(ctx,values)}}},{key:\"_drawImageLabel\",value:function _drawImageLabel(ctx,x,y,selected,hover){var yLabel;var offset=0;if(this.height!==undefined){offset=this.height*.5;var labelDimensions=this.labelModule.getTextSize(ctx,selected,hover);if(labelDimensions.lineCount>=1){offset+=labelDimensions.height/2}}yLabel=y+offset;if(this.options.label){this.labelOffset=offset}this.labelModule.draw(ctx,x,yLabel,selected,hover,\"hanging\")}}]);return CircleImageBase}(_NodeBase3[\"default\"]);exports[\"default\"]=CircleImageBase},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Label=__webpack_require__(117)[\"default\"];var ComponentUtil=__webpack_require__(48)[\"default\"];var CubicBezierEdge=__webpack_require__(215)[\"default\"];var BezierEdgeDynamic=__webpack_require__(217)[\"default\"];var BezierEdgeStatic=__webpack_require__(218)[\"default\"];var StraightEdge=__webpack_require__(219)[\"default\"];var Edge=function(){function Edge(options,body,globalOptions,defaultOptions){(0,_classCallCheck3[\"default\"])(this,Edge);if(body===undefined){throw new Error(\"No body provided\")}this.options=util.bridgeObject(globalOptions);this.globalOptions=globalOptions;this.defaultOptions=defaultOptions;this.body=body;this.id=undefined;this.fromId=undefined;this.toId=undefined;this.selected=false;this.hover=false;this.labelDirty=true;this.baseWidth=this.options.width;this.baseFontSize=this.options.font.size;this.from=undefined;this.to=undefined;this.edgeType=undefined;this.connected=false;this.labelModule=new Label(this.body,this.options,true);this.setOptions(options)}(0,_createClass3[\"default\"])(Edge,[{key:\"setOptions\",value:function setOptions(options){if(!options){return}Edge.parseOptions(this.options,options,true,this.globalOptions);if(options.id!==undefined){this.id=options.id}if(options.from!==undefined){this.fromId=options.from}if(options.to!==undefined){this.toId=options.to}if(options.title!==undefined){this.title=options.title}if(options.value!==undefined){options.value=parseFloat(options.value)}var pile=[options,this.options,this.defaultOptions];this.chooser=ComponentUtil.choosify(\"edge\",pile);this.updateLabelModule(options);var dataChanged=this.updateEdgeType();this._setInteractionWidths();this.connect();if(options.hidden!==undefined||options.physics!==undefined){dataChanged=true}return dataChanged}},{key:\"getFormattingValues\",value:function getFormattingValues(){var toArrow=this.options.arrows.to===true||this.options.arrows.to.enabled===true;var fromArrow=this.options.arrows.from===true||this.options.arrows.from.enabled===true;var middleArrow=this.options.arrows.middle===true||this.options.arrows.middle.enabled===true;var inheritsColor=this.options.color.inherit;var values={toArrow:toArrow,toArrowScale:this.options.arrows.to.scaleFactor,toArrowType:this.options.arrows.to.type,middleArrow:middleArrow,middleArrowScale:this.options.arrows.middle.scaleFactor,middleArrowType:this.options.arrows.middle.type,fromArrow:fromArrow,fromArrowScale:this.options.arrows.from.scaleFactor,fromArrowType:this.options.arrows.from.type,arrowStrikethrough:this.options.arrowStrikethrough,color:inheritsColor?undefined:this.options.color.color,inheritsColor:inheritsColor,opacity:this.options.color.opacity,hidden:this.options.hidden,length:this.options.length,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y,dashes:this.options.dashes,width:this.options.width};if(this.selected||this.hover){if(this.chooser===true){if(this.selected){var selectedWidth=this.options.selectionWidth;if(typeof selectedWidth===\"function\"){values.width=selectedWidth(values.width)}else if(typeof selectedWidth===\"number\"){values.width+=selectedWidth}values.width=Math.max(values.width,.3/this.body.view.scale);values.color=this.options.color.highlight;values.shadow=this.options.shadow.enabled}else if(this.hover){var hoverWidth=this.options.hoverWidth;if(typeof hoverWidth===\"function\"){values.width=hoverWidth(values.width)}else if(typeof hoverWidth===\"number\"){values.width+=hoverWidth}values.width=Math.max(values.width,.3/this.body.view.scale);values.color=this.options.color.hover;values.shadow=this.options.shadow.enabled}}else if(typeof this.chooser===\"function\"){this.chooser(values,this.options.id,this.selected,this.hover);if(values.color!==undefined){values.inheritsColor=false}if(values.shadow===false){if(values.shadowColor!==this.options.shadow.color||values.shadowSize!==this.options.shadow.size||values.shadowX!==this.options.shadow.x||values.shadowY!==this.options.shadow.y){values.shadow=true}}}}else{values.shadow=this.options.shadow.enabled;values.width=Math.max(values.width,.3/this.body.view.scale)}return values}},{key:\"updateLabelModule\",value:function updateLabelModule(options){var pile=[options,this.options,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,pile);if(this.labelModule.baseSize!==undefined){this.baseFontSize=this.labelModule.baseSize}}},{key:\"updateEdgeType\",value:function updateEdgeType(){var smooth=this.options.smooth;var dataChanged=false;var changeInType=true;if(this.edgeType!==undefined){if(this.edgeType instanceof BezierEdgeDynamic&&smooth.enabled===true&&smooth.type===\"dynamic\"||this.edgeType instanceof CubicBezierEdge&&smooth.enabled===true&&smooth.type===\"cubicBezier\"||this.edgeType instanceof BezierEdgeStatic&&smooth.enabled===true&&smooth.type!==\"dynamic\"&&smooth.type!==\"cubicBezier\"||this.edgeType instanceof StraightEdge&&smooth.type.enabled===false){changeInType=false}if(changeInType===true){dataChanged=this.cleanup()}}if(changeInType===true){if(smooth.enabled===true){if(smooth.type===\"dynamic\"){dataChanged=true;this.edgeType=new BezierEdgeDynamic(this.options,this.body,this.labelModule)}else if(smooth.type===\"cubicBezier\"){this.edgeType=new CubicBezierEdge(this.options,this.body,this.labelModule)}else{this.edgeType=new BezierEdgeStatic(this.options,this.body,this.labelModule)}}else{this.edgeType=new StraightEdge(this.options,this.body,this.labelModule)}}else{this.edgeType.setOptions(this.options)}return dataChanged}},{key:\"connect\",value:function connect(){this.disconnect();this.from=this.body.nodes[this.fromId]||undefined;this.to=this.body.nodes[this.toId]||undefined;this.connected=this.from!==undefined&&this.to!==undefined;if(this.connected===true){this.from.attachEdge(this);this.to.attachEdge(this)}else{if(this.from){this.from.detachEdge(this)}if(this.to){this.to.detachEdge(this)}}this.edgeType.connect()}},{key:\"disconnect\",value:function disconnect(){if(this.from){this.from.detachEdge(this);this.from=undefined}if(this.to){this.to.detachEdge(this);this.to=undefined}this.connected=false}},{key:\"getTitle\",value:function getTitle(){return this.title}},{key:\"isSelected\",value:function isSelected(){return this.selected}},{key:\"getValue\",value:function getValue(){return this.options.value}},{key:\"setValueRange\",value:function setValueRange(min,max,total){if(this.options.value!==undefined){var scale=this.options.scaling.customScalingFunction(min,max,total,this.options.value);var widthDiff=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===true){var fontDiff=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+scale*fontDiff}this.options.width=this.options.scaling.min+scale*widthDiff}else{this.options.width=this.baseWidth;this.options.font.size=this.baseFontSize}this._setInteractionWidths();this.updateLabelModule()}},{key:\"_setInteractionWidths\",value:function _setInteractionWidths(){if(typeof this.options.hoverWidth===\"function\"){this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width)}else{this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width}if(typeof this.options.selectionWidth===\"function\"){this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width)}else{this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}}},{key:\"draw\",value:function draw(ctx){var values=this.getFormattingValues();if(values.hidden){return}var viaNode=this.edgeType.getViaNode();var arrowData={};this.edgeType.fromPoint=this.edgeType.from;this.edgeType.toPoint=this.edgeType.to;if(values.fromArrow){arrowData.from=this.edgeType.getArrowData(ctx,\"from\",viaNode,this.selected,this.hover,values);if(values.arrowStrikethrough===false)this.edgeType.fromPoint=arrowData.from.core}if(values.toArrow){arrowData.to=this.edgeType.getArrowData(ctx,\"to\",viaNode,this.selected,this.hover,values);if(values.arrowStrikethrough===false)this.edgeType.toPoint=arrowData.to.core}if(values.middleArrow){arrowData.middle=this.edgeType.getArrowData(ctx,\"middle\",viaNode,this.selected,this.hover,values)}this.edgeType.drawLine(ctx,values,this.selected,this.hover,viaNode);this.drawArrows(ctx,arrowData,values);this.drawLabel(ctx,viaNode)}},{key:\"drawArrows\",value:function drawArrows(ctx,arrowData,values){if(values.fromArrow){this.edgeType.drawArrowHead(ctx,values,this.selected,this.hover,arrowData.from)}if(values.middleArrow){this.edgeType.drawArrowHead(ctx,values,this.selected,this.hover,arrowData.middle)}if(values.toArrow){this.edgeType.drawArrowHead(ctx,values,this.selected,this.hover,arrowData.to)}}},{key:\"drawLabel\",value:function drawLabel(ctx,viaNode){if(this.options.label!==undefined){var node1=this.from;var node2=this.to;if(this.labelModule.differentState(this.selected,this.hover)){this.labelModule.getTextSize(ctx,this.selected,this.hover)}if(node1.id!=node2.id){this.labelModule.pointToSelf=false;var point=this.edgeType.getPoint(.5,viaNode);ctx.save();var rotationPoint=this._getRotation(ctx);if(rotationPoint.angle!=0){ctx.translate(rotationPoint.x,rotationPoint.y);ctx.rotate(rotationPoint.angle)}this.labelModule.draw(ctx,point.x,point.y,this.selected,this.hover);ctx.restore()}else{this.labelModule.pointToSelf=true;var x,y;var radius=this.options.selfReferenceSize;if(node1.shape.width>node1.shape.height){x=node1.x+node1.shape.width*.5;y=node1.y-radius}else{x=node1.x+radius;y=node1.y-node1.shape.height*.5}point=this._pointOnCircle(x,y,radius,.125);this.labelModule.draw(ctx,point.x,point.y,this.selected,this.hover)}}}},{key:\"getItemsOnPoint\",value:function getItemsOnPoint(point){var ret=[];if(this.labelModule.visible()){var rotationPoint=this._getRotation();if(ComponentUtil.pointInRect(this.labelModule.getSize(),point,rotationPoint)){ret.push({edgeId:this.id,labelId:0})}}var obj={left:point.x,top:point.y};if(this.isOverlappingWith(obj)){ret.push({edgeId:this.id})}return ret}},{key:\"isOverlappingWith\",value:function isOverlappingWith(obj){if(this.connected){var distMax=10;var xFrom=this.from.x;var yFrom=this.from.y;var xTo=this.to.x;var yTo=this.to.y;var xObj=obj.left;var yObj=obj.top;var dist=this.edgeType.getDistanceToEdge(xFrom,yFrom,xTo,yTo,xObj,yObj);return dist<distMax}else{return false}}},{key:\"_getRotation\",value:function _getRotation(ctx){var viaNode=this.edgeType.getViaNode();var point=this.edgeType.getPoint(.5,viaNode);if(ctx!==undefined){this.labelModule.calculateLabelSize(ctx,this.selected,this.hover,point.x,point.y)}var ret={x:point.x,y:this.labelModule.size.yLine,angle:0};if(!this.labelModule.visible()){return ret}if(this.options.font.align===\"horizontal\"){return ret}var dy=this.from.y-this.to.y;var dx=this.from.x-this.to.x;var angle=Math.atan2(dy,dx);if(angle<-1&&dx<0||angle>0&&dx<0){angle+=Math.PI}ret.angle=angle;return ret}},{key:\"_pointOnCircle\",value:function _pointOnCircle(x,y,radius,percentage){var angle=percentage*2*Math.PI;return{x:x+radius*Math.cos(angle),y:y-radius*Math.sin(angle)}}},{key:\"select\",value:function select(){this.selected=true}},{key:\"unselect\",value:function unselect(){this.selected=false}},{key:\"cleanup\",value:function cleanup(){return this.edgeType.cleanup()}},{key:\"remove\",value:function remove(){this.cleanup();this.disconnect();delete this.body.edges[this.id]}},{key:\"endPointsValid\",value:function endPointsValid(){return this.body.nodes[this.fromId]!==undefined&&this.body.nodes[this.toId]!==undefined}}],[{key:\"parseOptions\",value:function parseOptions(parentOptions,newOptions){var allowDeletion=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var globalOptions=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var copyFromGlobals=arguments.length>4&&arguments[4]!==undefined?arguments[4]:false;var fields=[\"arrowStrikethrough\",\"id\",\"from\",\"hidden\",\"hoverWidth\",\"labelHighlightBold\",\"length\",\"line\",\"opacity\",\"physics\",\"scaling\",\"selectionWidth\",\"selfReferenceSize\",\"to\",\"title\",\"value\",\"width\",\"font\",\"chosen\",\"widthConstraint\"];util.selectiveDeepExtend(fields,parentOptions,newOptions,allowDeletion);if(ComponentUtil.isValidLabel(newOptions.label)){parentOptions.label=newOptions.label}else{parentOptions.label=undefined}util.mergeOptions(parentOptions,newOptions,\"smooth\",globalOptions);util.mergeOptions(parentOptions,newOptions,\"shadow\",globalOptions);if(newOptions.dashes!==undefined&&newOptions.dashes!==null){parentOptions.dashes=newOptions.dashes}else if(allowDeletion===true&&newOptions.dashes===null){parentOptions.dashes=(0,_create2[\"default\"])(globalOptions.dashes)}if(newOptions.scaling!==undefined&&newOptions.scaling!==null){if(newOptions.scaling.min!==undefined){parentOptions.scaling.min=newOptions.scaling.min}if(newOptions.scaling.max!==undefined){parentOptions.scaling.max=newOptions.scaling.max}util.mergeOptions(parentOptions.scaling,newOptions.scaling,\"label\",globalOptions.scaling)}else if(allowDeletion===true&&newOptions.scaling===null){parentOptions.scaling=(0,_create2[\"default\"])(globalOptions.scaling)}if(newOptions.arrows!==undefined&&newOptions.arrows!==null){if(typeof newOptions.arrows===\"string\"){var arrows=newOptions.arrows.toLowerCase();parentOptions.arrows.to.enabled=arrows.indexOf(\"to\")!=-1;parentOptions.arrows.middle.enabled=arrows.indexOf(\"middle\")!=-1;parentOptions.arrows.from.enabled=arrows.indexOf(\"from\")!=-1}else if((0,_typeof3[\"default\"])(newOptions.arrows)===\"object\"){util.mergeOptions(parentOptions.arrows,newOptions.arrows,\"to\",globalOptions.arrows);util.mergeOptions(parentOptions.arrows,newOptions.arrows,\"middle\",globalOptions.arrows);util.mergeOptions(parentOptions.arrows,newOptions.arrows,\"from\",globalOptions.arrows)}else{throw new Error(\"The arrow newOptions can only be an object or a string. Refer to the documentation. You used:\"+(0,_stringify2[\"default\"])(newOptions.arrows))}}else if(allowDeletion===true&&newOptions.arrows===null){parentOptions.arrows=(0,_create2[\"default\"])(globalOptions.arrows)}if(newOptions.color!==undefined&&newOptions.color!==null){var fromColor=newOptions.color;var toColor=parentOptions.color;if(copyFromGlobals){util.deepExtend(toColor,globalOptions.color,false,allowDeletion)}else{for(var i in toColor){if(toColor.hasOwnProperty(i)){delete toColor[i]}}}if(util.isString(toColor)){toColor.color=toColor;toColor.highlight=toColor;toColor.hover=toColor;toColor.inherit=false;if(fromColor.opacity===undefined){toColor.opacity=1}}else{var colorsDefined=false;if(fromColor.color!==undefined){toColor.color=fromColor.color;colorsDefined=true}if(fromColor.highlight!==undefined){toColor.highlight=fromColor.highlight;colorsDefined=true}if(fromColor.hover!==undefined){toColor.hover=fromColor.hover;colorsDefined=true}if(fromColor.inherit!==undefined){toColor.inherit=fromColor.inherit}if(fromColor.opacity!==undefined){toColor.opacity=Math.min(1,Math.max(0,fromColor.opacity))}if(colorsDefined===true){toColor.inherit=false}else{if(toColor.inherit===undefined){toColor.inherit=\"from\"}}}}else if(allowDeletion===true&&newOptions.color===null){parentOptions.color=util.bridgeObject(globalOptions.color)}if(allowDeletion===true&&newOptions.font===null){parentOptions.font=util.bridgeObject(globalOptions.font)}}}]);return Edge}();exports[\"default\"]=Edge},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _EdgeBase2=__webpack_require__(118);var _EdgeBase3=_interopRequireDefault(_EdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var BezierEdgeBase=function(_EdgeBase){(0,_inherits3[\"default\"])(BezierEdgeBase,_EdgeBase);function BezierEdgeBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,BezierEdgeBase);return(0,_possibleConstructorReturn3[\"default\"])(this,(BezierEdgeBase.__proto__||(0,_getPrototypeOf2[\"default\"])(BezierEdgeBase)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(BezierEdgeBase,[{key:\"_findBorderPositionBezier\",value:function _findBorderPositionBezier(nearNode,ctx){var viaNode=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this._getViaCoordinates();var maxIterations=10;var iteration=0;var low=0;var high=1;var pos,angle,distanceToBorder,distanceToPoint,difference;var threshold=.2;var node=this.to;var from=false;if(nearNode.id===this.from.id){node=this.from;from=true}while(low<=high&&iteration<maxIterations){var middle=(low+high)*.5;pos=this.getPoint(middle,viaNode);angle=Math.atan2(node.y-pos.y,node.x-pos.x);distanceToBorder=node.distanceToBorder(ctx,angle);distanceToPoint=Math.sqrt(Math.pow(pos.x-node.x,2)+Math.pow(pos.y-node.y,2));difference=distanceToBorder-distanceToPoint;if(Math.abs(difference)<threshold){break}else if(difference<0){if(from===false){low=middle}else{high=middle}}else{if(from===false){high=middle}else{low=middle}}iteration++}pos.t=middle;return pos}},{key:\"_getDistanceToBezierEdge\",value:function _getDistanceToBezierEdge(x1,y1,x2,y2,x3,y3,via){var minDistance=1e9;var distance=void 0;var i=void 0,t=void 0,x=void 0,y=void 0;var lastX=x1;var lastY=y1;for(i=1;i<10;i++){t=.1*i;x=Math.pow(1-t,2)*x1+2*t*(1-t)*via.x+Math.pow(t,2)*x2;y=Math.pow(1-t,2)*y1+2*t*(1-t)*via.y+Math.pow(t,2)*y2;if(i>0){distance=this._getDistanceToLine(lastX,lastY,x,y,x3,y3);minDistance=distance<minDistance?distance:minDistance}lastX=x;lastY=y}return minDistance}},{key:\"_bezierCurve\",value:function _bezierCurve(ctx,values,viaNode1,viaNode2){var hasNode1=viaNode1!==undefined&&viaNode1.x!==undefined;var hasNode2=viaNode2!==undefined&&viaNode2.x!==undefined;ctx.beginPath();ctx.moveTo(this.fromPoint.x,this.fromPoint.y);if(hasNode1&&hasNode2){ctx.bezierCurveTo(viaNode1.x,viaNode1.y,viaNode2.x,viaNode2.y,this.toPoint.x,this.toPoint.y)}else if(hasNode1){ctx.quadraticCurveTo(viaNode1.x,viaNode1.y,this.toPoint.x,this.toPoint.y)}else{ctx.lineTo(this.toPoint.x,this.toPoint.y)}this.enableShadow(ctx,values);ctx.stroke();this.disableShadow(ctx,values)}},{key:\"getViaNode\",value:function getViaNode(){return this._getViaCoordinates()}}]);return BezierEdgeBase}(_EdgeBase3[\"default\"]);exports[\"default\"]=BezierEdgeBase},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var NetworkUtil=function(){function NetworkUtil(){(0,_classCallCheck3[\"default\"])(this,NetworkUtil)}(0,_createClass3[\"default\"])(NetworkUtil,null,[{key:\"getRange\",value:function getRange(allNodes){var specificNodes=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var minY=1e9,maxY=-1e9,minX=1e9,maxX=-1e9,node;if(specificNodes.length>0){for(var i=0;i<specificNodes.length;i++){node=allNodes[specificNodes[i]];if(minX>node.shape.boundingBox.left){minX=node.shape.boundingBox.left}if(maxX<node.shape.boundingBox.right){maxX=node.shape.boundingBox.right}if(minY>node.shape.boundingBox.top){minY=node.shape.boundingBox.top}if(maxY<node.shape.boundingBox.bottom){maxY=node.shape.boundingBox.bottom}}}if(minX===1e9&&maxX===-1e9&&minY===1e9&&maxY===-1e9){minY=0,maxY=0,minX=0,maxX=0}return{minX:minX,maxX:maxX,minY:minY,maxY:maxY}}},{key:\"getRangeCore\",value:function getRangeCore(allNodes){var specificNodes=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var minY=1e9,maxY=-1e9,minX=1e9,maxX=-1e9,node;if(specificNodes.length>0){for(var i=0;i<specificNodes.length;i++){node=allNodes[specificNodes[i]];if(minX>node.x){minX=node.x}if(maxX<node.x){maxX=node.x}if(minY>node.y){minY=node.y}if(maxY<node.y){maxY=node.y}}}if(minX===1e9&&maxX===-1e9&&minY===1e9&&maxY===-1e9){minY=0,maxY=0,minX=0,maxX=0}return{minX:minX,maxX:maxX,minY:minY,maxY:maxY}}},{key:\"findCenter\",value:function findCenter(range){return{x:.5*(range.maxX+range.minX),y:.5*(range.maxY+range.minY)}}},{key:\"cloneOptions\",value:function cloneOptions(item,type){var clonedOptions={};if(type===undefined||type===\"node\"){util.deepExtend(clonedOptions,item.options,true);clonedOptions.x=item.x;clonedOptions.y=item.y;clonedOptions.amountOfConnections=item.edges.length}else{util.deepExtend(clonedOptions,item.options,true)}return clonedOptions}}]);return NetworkUtil}();exports[\"default\"]=NetworkUtil},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(124),__esModule:true}},function(module,exports,__webpack_require__){var cof=__webpack_require__(50);module.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(it){return cof(it)==\"String\"?it.split(\"\"):Object(it)}},function(module,exports,__webpack_require__){\"use strict\";var LIBRARY=__webpack_require__(52);var $export=__webpack_require__(17);var redefine=__webpack_require__(83);var hide=__webpack_require__(26);var has=__webpack_require__(22);var Iterators=__webpack_require__(31);var $iterCreate=__webpack_require__(129);var setToStringTag=__webpack_require__(59);var getPrototypeOf=__webpack_require__(85);var ITERATOR=__webpack_require__(13)(\"iterator\");var BUGGY=!([].keys&&\"next\"in[].keys())\n;var FF_ITERATOR=\"@@iterator\";var KEYS=\"keys\";var VALUES=\"values\";var returnThis=function(){return this};module.exports=function(Base,NAME,Constructor,next,DEFAULT,IS_SET,FORCED){$iterCreate(Constructor,NAME,next);var getMethod=function(kind){if(!BUGGY&&kind in proto)return proto[kind];switch(kind){case KEYS:return function keys(){return new Constructor(this,kind)};case VALUES:return function values(){return new Constructor(this,kind)}}return function entries(){return new Constructor(this,kind)}};var TAG=NAME+\" Iterator\";var DEF_VALUES=DEFAULT==VALUES;var VALUES_BUG=false;var proto=Base.prototype;var $native=proto[ITERATOR]||proto[FF_ITERATOR]||DEFAULT&&proto[DEFAULT];var $default=$native||getMethod(DEFAULT);var $entries=DEFAULT?!DEF_VALUES?$default:getMethod(\"entries\"):undefined;var $anyNative=NAME==\"Array\"?proto.entries||$native:$native;var methods,key,IteratorPrototype;if($anyNative){IteratorPrototype=getPrototypeOf($anyNative.call(new Base));if(IteratorPrototype!==Object.prototype&&IteratorPrototype.next){setToStringTag(IteratorPrototype,TAG,true);if(!LIBRARY&&!has(IteratorPrototype,ITERATOR))hide(IteratorPrototype,ITERATOR,returnThis)}}if(DEF_VALUES&&$native&&$native.name!==VALUES){VALUES_BUG=true;$default=function values(){return $native.call(this)}}if((!LIBRARY||FORCED)&&(BUGGY||VALUES_BUG||!proto[ITERATOR])){hide(proto,ITERATOR,$default)}Iterators[NAME]=$default;Iterators[TAG]=returnThis;if(DEFAULT){methods={values:DEF_VALUES?$default:getMethod(VALUES),keys:IS_SET?$default:getMethod(KEYS),entries:$entries};if(FORCED)for(key in methods){if(!(key in proto))redefine(proto,key,methods[key])}else $export($export.P+$export.F*(BUGGY||VALUES_BUG),NAME,methods)}return methods}},function(module,exports,__webpack_require__){var aFunction=__webpack_require__(128);module.exports=function(fn,that,length){aFunction(fn);if(that===undefined)return fn;switch(length){case 1:return function(a){return fn.call(that,a)};case 2:return function(a,b){return fn.call(that,a,b)};case 3:return function(a,b,c){return fn.call(that,a,b,c)}}return function(){return fn.apply(that,arguments)}}},function(module,exports,__webpack_require__){module.exports=!__webpack_require__(21)&&!__webpack_require__(28)(function(){return Object.defineProperty(__webpack_require__(82)(\"div\"),\"a\",{get:function(){return 7}}).a!=7})},function(module,exports,__webpack_require__){var isObject=__webpack_require__(32);var document=__webpack_require__(18).document;var is=isObject(document)&&isObject(document.createElement);module.exports=function(it){return is?document.createElement(it):{}}},function(module,exports,__webpack_require__){module.exports=__webpack_require__(26)},function(module,exports,__webpack_require__){var has=__webpack_require__(22);var toIObject=__webpack_require__(25);var arrayIndexOf=__webpack_require__(131)(false);var IE_PROTO=__webpack_require__(56)(\"IE_PROTO\");module.exports=function(object,names){var O=toIObject(object);var i=0;var result=[];var key;for(key in O)if(key!=IE_PROTO)has(O,key)&&result.push(key);while(names.length>i)if(has(O,key=names[i++])){~arrayIndexOf(result,key)||result.push(key)}return result}},function(module,exports,__webpack_require__){var has=__webpack_require__(22);var toObject=__webpack_require__(41);var IE_PROTO=__webpack_require__(56)(\"IE_PROTO\");var ObjectProto=Object.prototype;module.exports=Object.getPrototypeOf||function(O){O=toObject(O);if(has(O,IE_PROTO))return O[IE_PROTO];if(typeof O.constructor==\"function\"&&O instanceof O.constructor){return O.constructor.prototype}return O instanceof Object?ObjectProto:null}},function(module,exports,__webpack_require__){var cof=__webpack_require__(50);var TAG=__webpack_require__(13)(\"toStringTag\");var ARG=cof(function(){return arguments}())==\"Arguments\";var tryGet=function(it,key){try{return it[key]}catch(e){}};module.exports=function(it){var O,T,B;return it===undefined?\"Undefined\":it===null?\"Null\":typeof(T=tryGet(O=Object(it),TAG))==\"string\"?T:ARG?cof(O):(B=cof(O))==\"Object\"&&typeof O.callee==\"function\"?\"Arguments\":B}},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);var core=__webpack_require__(7);var fails=__webpack_require__(28);module.exports=function(KEY,exec){var fn=(core.Object||{})[KEY]||Object[KEY];var exp={};exp[KEY]=exec(fn);$export($export.S+$export.F*fails(function(){fn(1)}),\"Object\",exp)}},function(module,exports,__webpack_require__){var $keys=__webpack_require__(84);var hiddenKeys=__webpack_require__(58).concat(\"length\",\"prototype\");exports.f=Object.getOwnPropertyNames||function getOwnPropertyNames(O){return $keys(O,hiddenKeys)}},function(module,exports,__webpack_require__){var pIE=__webpack_require__(42);var createDesc=__webpack_require__(39);var toIObject=__webpack_require__(25);var toPrimitive=__webpack_require__(53);var has=__webpack_require__(22);var IE8_DOM_DEFINE=__webpack_require__(81);var gOPD=Object.getOwnPropertyDescriptor;exports.f=__webpack_require__(21)?gOPD:function getOwnPropertyDescriptor(O,P){O=toIObject(O);P=toPrimitive(P,true);if(IE8_DOM_DEFINE)try{return gOPD(O,P)}catch(e){}if(has(O,P))return createDesc(!pIE.f.call(O,P),O[P])}},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(162),__esModule:true}},function(module,exports,__webpack_require__){\"use strict\";function Point2d(x,y){this.x=x!==undefined?x:0;this.y=y!==undefined?y:0}module.exports=Point2d},function(module,exports,__webpack_require__){\"use strict\";var util=__webpack_require__(2);function Slider(container,options){if(container===undefined){throw new Error(\"No container element defined\")}this.container=container;this.visible=options&&options.visible!=undefined?options.visible:true;if(this.visible){this.frame=document.createElement(\"DIV\");this.frame.style.width=\"100%\";this.frame.style.position=\"relative\";this.container.appendChild(this.frame);this.frame.prev=document.createElement(\"INPUT\");this.frame.prev.type=\"BUTTON\";this.frame.prev.value=\"Prev\";this.frame.appendChild(this.frame.prev);this.frame.play=document.createElement(\"INPUT\");this.frame.play.type=\"BUTTON\";this.frame.play.value=\"Play\";this.frame.appendChild(this.frame.play);this.frame.next=document.createElement(\"INPUT\");this.frame.next.type=\"BUTTON\";this.frame.next.value=\"Next\";this.frame.appendChild(this.frame.next);this.frame.bar=document.createElement(\"INPUT\");this.frame.bar.type=\"BUTTON\";this.frame.bar.style.position=\"absolute\";this.frame.bar.style.border=\"1px solid red\";this.frame.bar.style.width=\"100px\";this.frame.bar.style.height=\"6px\";this.frame.bar.style.borderRadius=\"2px\";this.frame.bar.style.MozBorderRadius=\"2px\";this.frame.bar.style.border=\"1px solid #7F7F7F\";this.frame.bar.style.backgroundColor=\"#E5E5E5\";this.frame.appendChild(this.frame.bar);this.frame.slide=document.createElement(\"INPUT\");this.frame.slide.type=\"BUTTON\";this.frame.slide.style.margin=\"0px\";this.frame.slide.value=\" \";this.frame.slide.style.position=\"relative\";this.frame.slide.style.left=\"-100px\";this.frame.appendChild(this.frame.slide);var me=this;this.frame.slide.onmousedown=function(event){me._onMouseDown(event)};this.frame.prev.onclick=function(event){me.prev(event)};this.frame.play.onclick=function(event){me.togglePlay(event)};this.frame.next.onclick=function(event){me.next(event)}}this.onChangeCallback=undefined;this.values=[];this.index=undefined;this.playTimeout=undefined;this.playInterval=1e3;this.playLoop=true}Slider.prototype.prev=function(){var index=this.getIndex();if(index>0){index--;this.setIndex(index)}};Slider.prototype.next=function(){var index=this.getIndex();if(index<this.values.length-1){index++;this.setIndex(index)}};Slider.prototype.playNext=function(){var start=new Date;var index=this.getIndex();if(index<this.values.length-1){index++;this.setIndex(index)}else if(this.playLoop){index=0;this.setIndex(index)}var end=new Date;var diff=end-start;var interval=Math.max(this.playInterval-diff,0);var me=this;this.playTimeout=setTimeout(function(){me.playNext()},interval)};Slider.prototype.togglePlay=function(){if(this.playTimeout===undefined){this.play()}else{this.stop()}};Slider.prototype.play=function(){if(this.playTimeout)return;this.playNext();if(this.frame){this.frame.play.value=\"Stop\"}};Slider.prototype.stop=function(){clearInterval(this.playTimeout);this.playTimeout=undefined;if(this.frame){this.frame.play.value=\"Play\"}};Slider.prototype.setOnChangeCallback=function(callback){this.onChangeCallback=callback};Slider.prototype.setPlayInterval=function(interval){this.playInterval=interval};Slider.prototype.getPlayInterval=function(){return this.playInterval};Slider.prototype.setPlayLoop=function(doLoop){this.playLoop=doLoop};Slider.prototype.onChange=function(){if(this.onChangeCallback!==undefined){this.onChangeCallback()}};Slider.prototype.redraw=function(){if(this.frame){this.frame.bar.style.top=this.frame.clientHeight/2-this.frame.bar.offsetHeight/2+\"px\";this.frame.bar.style.width=this.frame.clientWidth-this.frame.prev.clientWidth-this.frame.play.clientWidth-this.frame.next.clientWidth-30+\"px\";var left=this.indexToLeft(this.index);this.frame.slide.style.left=left+\"px\"}};Slider.prototype.setValues=function(values){this.values=values;if(this.values.length>0)this.setIndex(0);else this.index=undefined};Slider.prototype.setIndex=function(index){if(index<this.values.length){this.index=index;this.redraw();this.onChange()}else{throw new Error(\"Index out of range\")}};Slider.prototype.getIndex=function(){return this.index};Slider.prototype.get=function(){return this.values[this.index]};Slider.prototype._onMouseDown=function(event){var leftButtonDown=event.which?event.which===1:event.button===1;if(!leftButtonDown)return;this.startClientX=event.clientX;this.startSlideX=parseFloat(this.frame.slide.style.left);this.frame.style.cursor=\"move\";var me=this;this.onmousemove=function(event){me._onMouseMove(event)};this.onmouseup=function(event){me._onMouseUp(event)};util.addEventListener(document,\"mousemove\",this.onmousemove);util.addEventListener(document,\"mouseup\",this.onmouseup);util.preventDefault(event)};Slider.prototype.leftToIndex=function(left){var width=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10;var x=left-3;var index=Math.round(x/width*(this.values.length-1));if(index<0)index=0;if(index>this.values.length-1)index=this.values.length-1;return index};Slider.prototype.indexToLeft=function(index){var width=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10;var x=index/(this.values.length-1)*width;var left=x+3;return left};Slider.prototype._onMouseMove=function(event){var diff=event.clientX-this.startClientX;var x=this.startSlideX+diff;var index=this.leftToIndex(x);this.setIndex(index);util.preventDefault()};Slider.prototype._onMouseUp=function(event){this.frame.style.cursor=\"auto\";util.removeEventListener(document,\"mousemove\",this.onmousemove);util.removeEventListener(document,\"mouseup\",this.onmouseup);util.preventDefault()};module.exports=Slider},function(module,exports,__webpack_require__){\"use strict\";function StepNumber(start,end,step,prettyStep){this._start=0;this._end=0;this._step=1;this.prettyStep=true;this.precision=5;this._current=0;this.setRange(start,end,step,prettyStep)}StepNumber.prototype.isNumeric=function(n){return!isNaN(parseFloat(n))&&isFinite(n)};StepNumber.prototype.setRange=function(start,end,step,prettyStep){if(!this.isNumeric(start)){throw new Error(\"Parameter 'start' is not numeric; value: \"+start)}if(!this.isNumeric(end)){throw new Error(\"Parameter 'end' is not numeric; value: \"+start)}if(!this.isNumeric(step)){throw new Error(\"Parameter 'step' is not numeric; value: \"+start)}this._start=start?start:0;this._end=end?end:0;this.setStep(step,prettyStep)};StepNumber.prototype.setStep=function(step,prettyStep){if(step===undefined||step<=0)return;if(prettyStep!==undefined)this.prettyStep=prettyStep;if(this.prettyStep===true)this._step=StepNumber.calculatePrettyStep(step);else this._step=step};StepNumber.calculatePrettyStep=function(step){var log10=function log10(x){return Math.log(x)/Math.LN10};var step1=Math.pow(10,Math.round(log10(step))),step2=2*Math.pow(10,Math.round(log10(step/2))),step5=5*Math.pow(10,Math.round(log10(step/5)));var prettyStep=step1;if(Math.abs(step2-step)<=Math.abs(prettyStep-step))prettyStep=step2;if(Math.abs(step5-step)<=Math.abs(prettyStep-step))prettyStep=step5;if(prettyStep<=0){prettyStep=1}return prettyStep};StepNumber.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))};StepNumber.prototype.getStep=function(){return this._step};StepNumber.prototype.start=function(checkFirst){if(checkFirst===undefined){checkFirst=false}this._current=this._start-this._start%this._step;if(checkFirst){if(this.getCurrent()<this._start){this.next()}}};StepNumber.prototype.next=function(){this._current+=this._step};StepNumber.prototype.end=function(){return this._current>this._end};module.exports=StepNumber},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Camera=__webpack_require__(95);var Point3d=__webpack_require__(34);var STYLE={BAR:0,BARCOLOR:1,BARSIZE:2,DOT:3,DOTLINE:4,DOTCOLOR:5,DOTSIZE:6,GRID:7,LINE:8,SURFACE:9};var STYLENAME={dot:STYLE.DOT,\"dot-line\":STYLE.DOTLINE,\"dot-color\":STYLE.DOTCOLOR,\"dot-size\":STYLE.DOTSIZE,line:STYLE.LINE,grid:STYLE.GRID,surface:STYLE.SURFACE,bar:STYLE.BAR,\"bar-color\":STYLE.BARCOLOR,\"bar-size\":STYLE.BARSIZE};var OPTIONKEYS=[\"width\",\"height\",\"filterLabel\",\"legendLabel\",\"xLabel\",\"yLabel\",\"zLabel\",\"xValueLabel\",\"yValueLabel\",\"zValueLabel\",\"showXAxis\",\"showYAxis\",\"showZAxis\",\"showGrid\",\"showPerspective\",\"showShadow\",\"keepAspectRatio\",\"verticalRatio\",\"dotSizeRatio\",\"dotSizeMinFraction\",\"dotSizeMaxFraction\",\"showAnimationControls\",\"animationInterval\",\"animationPreload\",\"animationAutoStart\",\"axisColor\",\"gridColor\",\"xCenter\",\"yCenter\"];var PREFIXEDOPTIONKEYS=[\"xBarWidth\",\"yBarWidth\",\"valueMin\",\"valueMax\",\"xMin\",\"xMax\",\"xStep\",\"yMin\",\"yMax\",\"yStep\",\"zMin\",\"zMax\",\"zStep\"];var DEFAULTS=undefined;function isEmpty(obj){for(var prop in obj){if(obj.hasOwnProperty(prop))return false}return true}function capitalize(str){if(str===undefined||str===\"\"||typeof str!=\"string\"){return str}return str.charAt(0).toUpperCase()+str.slice(1)}function prefixFieldName(prefix,fieldName){if(prefix===undefined||prefix===\"\"){return fieldName}return prefix+capitalize(fieldName)}function forceCopy(src,dst,fields,prefix){var srcKey;var dstKey;for(var i=0;i<fields.length;++i){srcKey=fields[i];dstKey=prefixFieldName(prefix,srcKey);dst[dstKey]=src[srcKey]}}function safeCopy(src,dst,fields,prefix){var srcKey;var dstKey;for(var i=0;i<fields.length;++i){srcKey=fields[i];if(src[srcKey]===undefined)continue;dstKey=prefixFieldName(prefix,srcKey);dst[dstKey]=src[srcKey]}}function setDefaults(src,dst){if(src===undefined||isEmpty(src)){throw new Error(\"No DEFAULTS passed\")}if(dst===undefined){throw new Error(\"No dst passed\")}DEFAULTS=src;forceCopy(src,dst,OPTIONKEYS);forceCopy(src,dst,PREFIXEDOPTIONKEYS,\"default\");setSpecialSettings(src,dst);dst.margin=10;dst.showGrayBottom=false;dst.showTooltip=false;dst.onclick_callback=null;dst.eye=new Point3d(0,0,-1)}function setOptions(options,dst){if(options===undefined){return}if(dst===undefined){throw new Error(\"No dst passed\")}if(DEFAULTS===undefined||isEmpty(DEFAULTS)){throw new Error(\"DEFAULTS not set for module Settings\")}safeCopy(options,dst,OPTIONKEYS);safeCopy(options,dst,PREFIXEDOPTIONKEYS,\"default\");setSpecialSettings(options,dst)}function setSpecialSettings(src,dst){if(src.backgroundColor!==undefined){setBackgroundColor(src.backgroundColor,dst)}setDataColor(src.dataColor,dst);setStyle(src.style,dst);setShowLegend(src.showLegend,dst);setCameraPosition(src.cameraPosition,dst);if(src.tooltip!==undefined){dst.showTooltip=src.tooltip}if(src.onclick!=undefined){dst.onclick_callback=src.onclick}if(src.tooltipStyle!==undefined){util.selectiveDeepExtend([\"tooltipStyle\"],dst,src)}}function setShowLegend(showLegend,dst){if(showLegend===undefined){var isAutoByDefault=DEFAULTS.showLegend===undefined;if(isAutoByDefault){var isLegendGraphStyle=dst.style===STYLE.DOTCOLOR||dst.style===STYLE.DOTSIZE;dst.showLegend=isLegendGraphStyle}else{}}else{dst.showLegend=showLegend}}function getStyleNumberByName(styleName){var number=STYLENAME[styleName];if(number===undefined){return-1}return number}function checkStyleNumber(style){var valid=false;for(var n in STYLE){if(STYLE[n]===style){valid=true;break}}return valid}function setStyle(style,dst){if(style===undefined){return}var styleNumber;if(typeof style===\"string\"){styleNumber=getStyleNumberByName(style);if(styleNumber===-1){throw new Error(\"Style '\"+style+\"' is invalid\")}}else{if(!checkStyleNumber(style)){throw new Error(\"Style '\"+style+\"' is invalid\")}styleNumber=style}dst.style=styleNumber}function setBackgroundColor(backgroundColor,dst){var fill=\"white\";var stroke=\"gray\";var strokeWidth=1;if(typeof backgroundColor===\"string\"){fill=backgroundColor;stroke=\"none\";strokeWidth=0}else if((typeof backgroundColor===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(backgroundColor))===\"object\"){if(backgroundColor.fill!==undefined)fill=backgroundColor.fill;if(backgroundColor.stroke!==undefined)stroke=backgroundColor.stroke;if(backgroundColor.strokeWidth!==undefined)strokeWidth=backgroundColor.strokeWidth}else{throw new Error(\"Unsupported type of backgroundColor\")}dst.frame.style.backgroundColor=fill;dst.frame.style.borderColor=stroke;dst.frame.style.borderWidth=strokeWidth+\"px\";dst.frame.style.borderStyle=\"solid\"}function setDataColor(dataColor,dst){if(dataColor===undefined){return}if(dst.dataColor===undefined){dst.dataColor={}}if(typeof dataColor===\"string\"){dst.dataColor.fill=dataColor;dst.dataColor.stroke=dataColor}else{if(dataColor.fill){dst.dataColor.fill=dataColor.fill}if(dataColor.stroke){dst.dataColor.stroke=dataColor.stroke}if(dataColor.strokeWidth!==undefined){dst.dataColor.strokeWidth=dataColor.strokeWidth}}}function setCameraPosition(cameraPosition,dst){var camPos=cameraPosition;if(camPos===undefined){return}if(dst.camera===undefined){dst.camera=new Camera}dst.camera.setArmRotation(camPos.horizontal,camPos.vertical);dst.camera.setArmLength(camPos.distance)}module.exports.STYLE=STYLE;module.exports.setDefaults=setDefaults;module.exports.setOptions=setOptions;module.exports.setCameraPosition=setCameraPosition},function(module,exports,__webpack_require__){\"use strict\";var _sign=__webpack_require__(165);var _sign2=_interopRequireDefault(_sign);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Point3d=__webpack_require__(34);function Camera(){this.armLocation=new Point3d;this.armRotation={};this.armRotation.horizontal=0;this.armRotation.vertical=0;this.armLength=1.7;this.cameraOffset=new Point3d;this.offsetMultiplier=.6;this.cameraLocation=new Point3d;this.cameraRotation=new Point3d(.5*Math.PI,0,0);this.calculateCameraOrientation()}Camera.prototype.setOffset=function(x,y){var abs=Math.abs,sign=_sign2[\"default\"],mul=this.offsetMultiplier,border=this.armLength*mul;if(abs(x)>border){x=sign(x)*border}if(abs(y)>border){y=sign(y)*border}this.cameraOffset.x=x;this.cameraOffset.y=y;this.calculateCameraOrientation()};Camera.prototype.getOffset=function(){return this.cameraOffset};Camera.prototype.setArmLocation=function(x,y,z){this.armLocation.x=x;this.armLocation.y=y;this.armLocation.z=z;this.calculateCameraOrientation()};Camera.prototype.setArmRotation=function(horizontal,vertical){if(horizontal!==undefined){this.armRotation.horizontal=horizontal}if(vertical!==undefined){this.armRotation.vertical=vertical;if(this.armRotation.vertical<0)this.armRotation.vertical=0;if(this.armRotation.vertical>.5*Math.PI)this.armRotation.vertical=.5*Math.PI}if(horizontal!==undefined||vertical!==undefined){this.calculateCameraOrientation()}};Camera.prototype.getArmRotation=function(){var rot={};rot.horizontal=this.armRotation.horizontal;rot.vertical=this.armRotation.vertical;return rot};Camera.prototype.setArmLength=function(length){if(length===undefined)return;this.armLength=length;if(this.armLength<.71)this.armLength=.71;if(this.armLength>5)this.armLength=5;this.setOffset(this.cameraOffset.x,this.cameraOffset.y);this.calculateCameraOrientation()};Camera.prototype.getArmLength=function(){return this.armLength};Camera.prototype.getCameraLocation=function(){return this.cameraLocation};Camera.prototype.getCameraRotation=function(){return this.cameraRotation};Camera.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical);this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical);this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical);this.cameraRotation.x=Math.PI/2-this.armRotation.vertical;this.cameraRotation.y=0;this.cameraRotation.z=-this.armRotation.horizontal;var xa=this.cameraRotation.x;var za=this.cameraRotation.z;var dx=this.cameraOffset.x;var dy=this.cameraOffset.y;var sin=Math.sin,cos=Math.cos;this.cameraLocation.x=this.cameraLocation.x+dx*cos(za)+dy*-sin(za)*cos(xa);this.cameraLocation.y=this.cameraLocation.y+dx*sin(za)+dy*cos(za)*cos(xa);this.cameraLocation.z=this.cameraLocation.z+dy*sin(xa)};module.exports=Camera},function(module,exports,__webpack_require__){\"use strict\";var DataView=__webpack_require__(12);function Filter(dataGroup,column,graph){this.dataGroup=dataGroup;this.column=column;this.graph=graph;this.index=undefined;this.value=undefined;this.values=dataGroup.getDistinctValues(this.column);if(this.values.length>0){this.selectValue(0)}this.dataPoints=[];this.loaded=false;this.onLoadCallback=undefined;if(graph.animationPreload){this.loaded=false;this.loadInBackground()}else{this.loaded=true}}Filter.prototype.isLoaded=function(){return this.loaded};Filter.prototype.getLoadedProgress=function(){var len=this.values.length;var i=0;while(this.dataPoints[i]){i++}return Math.round(i/len*100)};Filter.prototype.getLabel=function(){return this.graph.filterLabel};Filter.prototype.getColumn=function(){return this.column};Filter.prototype.getSelectedValue=function(){if(this.index===undefined)return undefined;return this.values[this.index]};Filter.prototype.getValues=function(){return this.values};Filter.prototype.getValue=function(index){if(index>=this.values.length)throw new Error(\"Index out of range\");return this.values[index]};Filter.prototype._getDataPoints=function(index){if(index===undefined)index=this.index;if(index===undefined)return[];var dataPoints;if(this.dataPoints[index]){dataPoints=this.dataPoints[index]}else{var f={};f.column=this.column;f.value=this.values[index];var dataView=new DataView(this.dataGroup.getDataSet(),{filter:function filter(item){return item[f.column]==f.value}}).get();dataPoints=this.dataGroup._getDataPoints(dataView);this.dataPoints[index]=dataPoints}return dataPoints};Filter.prototype.setOnLoadCallback=function(callback){this.onLoadCallback=callback};Filter.prototype.selectValue=function(index){if(index>=this.values.length)throw new Error(\"Index out of range\");this.index=index;this.value=this.values[index]};Filter.prototype.loadInBackground=function(index){if(index===undefined)index=0;var frame=this.graph.frame;if(index<this.values.length){if(frame.progress===undefined){frame.progress=document.createElement(\"DIV\");frame.progress.style.position=\"absolute\";frame.progress.style.color=\"gray\";frame.appendChild(frame.progress)}var progress=this.getLoadedProgress();frame.progress.innerHTML=\"Loading animation... \"+progress+\"%\";frame.progress.style.bottom=60+\"px\";frame.progress.style.left=10+\"px\";var me=this;setTimeout(function(){me.loadInBackground(index+1)},10);this.loaded=false}else{this.loaded=true;if(frame.progress!==undefined){frame.removeChild(frame.progress);frame.progress=undefined}if(this.onLoadCallback)this.onLoadCallback()}};module.exports=Filter},function(module,exports,__webpack_require__){\"use strict\";var keycharm=__webpack_require__(35);var Emitter=__webpack_require__(44);var Hammer=__webpack_require__(10);var util=__webpack_require__(2);function Activator(container){this.active=false;this.dom={container:container};this.dom.overlay=document.createElement(\"div\");this.dom.overlay.className=\"vis-overlay\";this.dom.container.appendChild(this.dom.overlay);this.hammer=Hammer(this.dom.overlay);this.hammer.on(\"tap\",this._onTapOverlay.bind(this));var me=this;var events=[\"tap\",\"doubletap\",\"press\",\"pinch\",\"pan\",\"panstart\",\"panmove\",\"panend\"];events.forEach(function(event){me.hammer.on(event,function(event){event.stopPropagation()})});if(document&&document.body){this.onClick=function(event){if(!_hasParent(event.target,container)){me.deactivate()}};document.body.addEventListener(\"click\",this.onClick)}if(this.keycharm!==undefined){this.keycharm.destroy()}this.keycharm=keycharm();this.escListener=this.deactivate.bind(this)}Emitter(Activator.prototype);Activator.current=null;Activator.prototype.destroy=function(){this.deactivate();this.dom.overlay.parentNode.removeChild(this.dom.overlay);if(this.onClick){document.body.removeEventListener(\"click\",this.onClick)}this.hammer.destroy();this.hammer=null};Activator.prototype.activate=function(){if(Activator.current){Activator.current.deactivate()}Activator.current=this;this.active=true;this.dom.overlay.style.display=\"none\";util.addClassName(this.dom.container,\"vis-active\");this.emit(\"change\");this.emit(\"activate\");this.keycharm.bind(\"esc\",this.escListener)};Activator.prototype.deactivate=function(){this.active=false;this.dom.overlay.style.display=\"\";util.removeClassName(this.dom.container,\"vis-active\");this.keycharm.unbind(\"esc\",this.escListener);this.emit(\"change\");this.emit(\"deactivate\")};Activator.prototype._onTapOverlay=function(event){this.activate();event.stopPropagation()};function _hasParent(element,parent){while(element){if(element===parent){return true}element=element.parentNode}return false}module.exports=Activator},function(module,exports,__webpack_require__){\"use strict\";exports[\"en\"]={current:\"current\",time:\"time\"};exports[\"en_EN\"]=exports[\"en\"];exports[\"en_US\"]=exports[\"en\"];exports[\"it\"]={current:\"attuale\",time:\"tempo\"};exports[\"it_IT\"]=exports[\"it\"];exports[\"it_CH\"]=exports[\"it\"];exports[\"nl\"]={current:\"huidige\",time:\"tijd\"};exports[\"nl_NL\"]=exports[\"nl\"];exports[\"nl_BE\"]=exports[\"nl\"];exports[\"de\"]={current:\"Aktuelle\",time:\"Zeit\"};exports[\"de_DE\"]=exports[\"de\"];exports[\"fr\"]={current:\"actuel\",time:\"heure\"};exports[\"fr_FR\"]=exports[\"fr\"];exports[\"fr_CA\"]=exports[\"fr\"];exports[\"fr_BE\"]=exports[\"fr\"];exports[\"es\"]={current:\"corriente\",time:\"hora\"};exports[\"es_ES\"]=exports[\"es\"]},function(module,exports,__webpack_require__){\"use strict\";var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hammer=__webpack_require__(10);var util=__webpack_require__(2);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var TimeStep=__webpack_require__(66);var Component=__webpack_require__(16);var Group=__webpack_require__(68);var BackgroundGroup=__webpack_require__(69);var BoxItem=__webpack_require__(101);var PointItem=__webpack_require__(102);var RangeItem=__webpack_require__(70);var BackgroundItem=__webpack_require__(103);var Popup=__webpack_require__(104)[\"default\"];var UNGROUPED=\"__ungrouped__\";var BACKGROUND=\"__background__\";function ItemSet(body,options){this.body=body;this.defaultOptions={type:null,orientation:{item:\"bottom\"},align:\"auto\",stack:true,stackSubgroups:true,groupOrderSwap:function groupOrderSwap(fromGroup,toGroup,groups){var targetOrder=toGroup.order;toGroup.order=fromGroup.order;fromGroup.order=targetOrder},groupOrder:\"order\",selectable:true,multiselect:false,itemsAlwaysDraggable:{item:false,range:false},editable:{updateTime:false,updateGroup:false,add:false,remove:false,overrideItems:false},groupEditable:{order:false,add:false,remove:false},snap:TimeStep.snap,onDropObjectOnItem:function onDropObjectOnItem(objectData,item,callback){callback(item)},onAdd:function onAdd(item,callback){callback(item)},onUpdate:function onUpdate(item,callback){callback(item)},onMove:function onMove(item,callback){callback(item)},onRemove:function onRemove(item,callback){callback(item)},onMoving:function onMoving(item,callback){callback(item)},onAddGroup:function onAddGroup(item,callback){callback(item)},onMoveGroup:function onMoveGroup(item,callback){callback(item)},onRemoveGroup:function onRemoveGroup(item,callback){callback(item)},margin:{item:{horizontal:10,vertical:10},axis:20},showTooltips:true,tooltip:{followMouse:false,overflowMethod:\"flip\"},tooltipOnItemUpdateTime:false};this.options=util.extend({},this.defaultOptions);this.options.rtl=options.rtl;this.itemOptions={type:{start:\"Date\",end:\"Date\"}};this.conversion={toScreen:body.util.toScreen,toTime:body.util.toTime};this.dom={};this.props={};this.hammer=null;var me=this;this.itemsData=null;this.groupsData=null;this.itemListeners={add:function add(event,params,senderId){me._onAdd(params.items)},update:function update(event,params,senderId){me._onUpdate(params.items)},remove:function remove(event,params,senderId){me._onRemove(params.items)}};this.groupListeners={add:function add(event,params,senderId){me._onAddGroups(params.items);if(me.groupsData&&me.groupsData.length>0){var groupsData=me.groupsData.getDataSet();groupsData.get().forEach(function(groupData){if(groupData.nestedGroups){if(groupData.showNested!=false){groupData.showNested=true}var updatedGroups=[];groupData.nestedGroups.forEach(function(nestedGroupId){var updatedNestedGroup=groupsData.get(nestedGroupId);if(!updatedNestedGroup){return}updatedNestedGroup.nestedInGroup=groupData.id;if(groupData.showNested==false){updatedNestedGroup.visible=false}updatedGroups=updatedGroups.concat(updatedNestedGroup)});groupsData.update(updatedGroups,senderId)}})}},update:function update(event,params,senderId){me._onUpdateGroups(params.items)},remove:function remove(event,params,senderId){me._onRemoveGroups(params.items)}};this.items={};this.groups={};this.groupIds=[];this.selection=[];this.popup=null;this.touchParams={};this.groupTouchParams={};this._create();this.setOptions(options)}ItemSet.prototype=new Component;ItemSet.types={background:BackgroundItem,box:BoxItem,range:RangeItem,point:PointItem};ItemSet.prototype._create=function(){var frame=document.createElement(\"div\");frame.className=\"vis-itemset\";frame[\"timeline-itemset\"]=this;this.dom.frame=frame;var background=document.createElement(\"div\");background.className=\"vis-background\";frame.appendChild(background);this.dom.background=background;var foreground=document.createElement(\"div\");foreground.className=\"vis-foreground\";frame.appendChild(foreground);this.dom.foreground=foreground;var axis=document.createElement(\"div\");axis.className=\"vis-axis\";this.dom.axis=axis;var labelSet=document.createElement(\"div\");labelSet.className=\"vis-labelset\";this.dom.labelSet=labelSet;this._updateUngrouped();var backgroundGroup=new BackgroundGroup(BACKGROUND,null,this);backgroundGroup.show();this.groups[BACKGROUND]=backgroundGroup;this.hammer=new Hammer(this.body.dom.centerContainer);this.hammer.on(\"hammer.input\",function(event){if(event.isFirst){this._onTouch(event)}}.bind(this));this.hammer.on(\"panstart\",this._onDragStart.bind(this));this.hammer.on(\"panmove\",this._onDrag.bind(this));this.hammer.on(\"panend\",this._onDragEnd.bind(this));this.hammer.get(\"pan\").set({threshold:5,direction:Hammer.DIRECTION_HORIZONTAL});this.hammer.on(\"tap\",this._onSelectItem.bind(this));this.hammer.on(\"press\",this._onMultiSelectItem.bind(this));this.hammer.on(\"doubletap\",this._onAddItem.bind(this));if(this.options.rtl){\nthis.groupHammer=new Hammer(this.body.dom.rightContainer)}else{this.groupHammer=new Hammer(this.body.dom.leftContainer)}this.groupHammer.on(\"tap\",this._onGroupClick.bind(this));this.groupHammer.on(\"panstart\",this._onGroupDragStart.bind(this));this.groupHammer.on(\"panmove\",this._onGroupDrag.bind(this));this.groupHammer.on(\"panend\",this._onGroupDragEnd.bind(this));this.groupHammer.get(\"pan\").set({threshold:5,direction:Hammer.DIRECTION_VERTICAL});this.body.dom.centerContainer.addEventListener(\"mouseover\",this._onMouseOver.bind(this));this.body.dom.centerContainer.addEventListener(\"mouseout\",this._onMouseOut.bind(this));this.body.dom.centerContainer.addEventListener(\"mousemove\",this._onMouseMove.bind(this));this.body.dom.centerContainer.addEventListener(\"contextmenu\",this._onDragEnd.bind(this));this.body.dom.centerContainer.addEventListener(\"mousewheel\",this._onMouseWheel.bind(this));this.show()};ItemSet.prototype.setOptions=function(options){if(options){var fields=[\"type\",\"rtl\",\"align\",\"order\",\"stack\",\"stackSubgroups\",\"selectable\",\"multiselect\",\"multiselectPerGroup\",\"groupOrder\",\"dataAttributes\",\"template\",\"groupTemplate\",\"visibleFrameTemplate\",\"hide\",\"snap\",\"groupOrderSwap\",\"showTooltips\",\"tooltip\",\"tooltipOnItemUpdateTime\"];util.selectiveExtend(fields,this.options,options);if(\"itemsAlwaysDraggable\"in options){if(typeof options.itemsAlwaysDraggable===\"boolean\"){this.options.itemsAlwaysDraggable.item=options.itemsAlwaysDraggable;this.options.itemsAlwaysDraggable.range=false}else if((0,_typeof3[\"default\"])(options.itemsAlwaysDraggable)===\"object\"){util.selectiveExtend([\"item\",\"range\"],this.options.itemsAlwaysDraggable,options.itemsAlwaysDraggable);if(!this.options.itemsAlwaysDraggable.item){this.options.itemsAlwaysDraggable.range=false}}}if(\"orientation\"in options){if(typeof options.orientation===\"string\"){this.options.orientation.item=options.orientation===\"top\"?\"top\":\"bottom\"}else if((0,_typeof3[\"default\"])(options.orientation)===\"object\"&&\"item\"in options.orientation){this.options.orientation.item=options.orientation.item}}if(\"margin\"in options){if(typeof options.margin===\"number\"){this.options.margin.axis=options.margin;this.options.margin.item.horizontal=options.margin;this.options.margin.item.vertical=options.margin}else if((0,_typeof3[\"default\"])(options.margin)===\"object\"){util.selectiveExtend([\"axis\"],this.options.margin,options.margin);if(\"item\"in options.margin){if(typeof options.margin.item===\"number\"){this.options.margin.item.horizontal=options.margin.item;this.options.margin.item.vertical=options.margin.item}else if((0,_typeof3[\"default\"])(options.margin.item)===\"object\"){util.selectiveExtend([\"horizontal\",\"vertical\"],this.options.margin.item,options.margin.item)}}}}if(\"editable\"in options){if(typeof options.editable===\"boolean\"){this.options.editable.updateTime=options.editable;this.options.editable.updateGroup=options.editable;this.options.editable.add=options.editable;this.options.editable.remove=options.editable;this.options.editable.overrideItems=false}else if((0,_typeof3[\"default\"])(options.editable)===\"object\"){util.selectiveExtend([\"updateTime\",\"updateGroup\",\"add\",\"remove\",\"overrideItems\"],this.options.editable,options.editable)}}if(\"groupEditable\"in options){if(typeof options.groupEditable===\"boolean\"){this.options.groupEditable.order=options.groupEditable;this.options.groupEditable.add=options.groupEditable;this.options.groupEditable.remove=options.groupEditable}else if((0,_typeof3[\"default\"])(options.groupEditable)===\"object\"){util.selectiveExtend([\"order\",\"add\",\"remove\"],this.options.groupEditable,options.groupEditable)}}var addCallback=function(name){var fn=options[name];if(fn){if(!(fn instanceof Function)){throw new Error(\"option \"+name+\" must be a function \"+name+\"(item, callback)\")}this.options[name]=fn}}.bind(this);[\"onDropObjectOnItem\",\"onAdd\",\"onUpdate\",\"onRemove\",\"onMove\",\"onMoving\",\"onAddGroup\",\"onMoveGroup\",\"onRemoveGroup\"].forEach(addCallback);this.markDirty()}};ItemSet.prototype.markDirty=function(options){this.groupIds=[];if(options&&options.refreshItems){util.forEach(this.items,function(item){item.dirty=true;if(item.displayed)item.redraw()})}};ItemSet.prototype.destroy=function(){this.hide();this.setItems(null);this.setGroups(null);this.hammer=null;this.body=null;this.conversion=null};ItemSet.prototype.hide=function(){if(this.dom.frame.parentNode){this.dom.frame.parentNode.removeChild(this.dom.frame)}if(this.dom.axis.parentNode){this.dom.axis.parentNode.removeChild(this.dom.axis)}if(this.dom.labelSet.parentNode){this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)}};ItemSet.prototype.show=function(){if(!this.dom.frame.parentNode){this.body.dom.center.appendChild(this.dom.frame)}if(!this.dom.axis.parentNode){this.body.dom.backgroundVertical.appendChild(this.dom.axis)}if(!this.dom.labelSet.parentNode){if(this.options.rtl){this.body.dom.right.appendChild(this.dom.labelSet)}else{this.body.dom.left.appendChild(this.dom.labelSet)}}};ItemSet.prototype.setSelection=function(ids){var i,ii,id,item;if(ids==undefined)ids=[];if(!Array.isArray(ids))ids=[ids];for(i=0,ii=this.selection.length;i<ii;i++){id=this.selection[i];item=this.items[id];if(item)item.unselect()}this.selection=[];for(i=0,ii=ids.length;i<ii;i++){id=ids[i];item=this.items[id];if(item){this.selection.push(id);item.select()}}};ItemSet.prototype.getSelection=function(){return this.selection.concat([])};ItemSet.prototype.getVisibleItems=function(){var range=this.body.range.getRange();var right,left;if(this.options.rtl){right=this.body.util.toScreen(range.start);left=this.body.util.toScreen(range.end)}else{left=this.body.util.toScreen(range.start);right=this.body.util.toScreen(range.end)}var ids=[];for(var groupId in this.groups){if(this.groups.hasOwnProperty(groupId)){var group=this.groups[groupId];var rawVisibleItems=group.isVisible?group.visibleItems:[];for(var i=0;i<rawVisibleItems.length;i++){var item=rawVisibleItems[i];if(this.options.rtl){if(item.right<left&&item.right+item.width>right){ids.push(item.id)}}else{if(item.left<right&&item.left+item.width>left){ids.push(item.id)}}}}}return ids};ItemSet.prototype._deselect=function(id){var selection=this.selection;for(var i=0,ii=selection.length;i<ii;i++){if(selection[i]==id){selection.splice(i,1);break}}};ItemSet.prototype.redraw=function(){var margin=this.options.margin,range=this.body.range,asSize=util.option.asSize,options=this.options,orientation=options.orientation.item,resized=false,frame=this.dom.frame;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top;if(this.options.rtl){this.props.right=this.body.domProps.right.width+this.body.domProps.border.right}else{this.props.left=this.body.domProps.left.width+this.body.domProps.border.left}frame.className=\"vis-itemset\";resized=this._orderGroups()||resized;var visibleInterval=range.end-range.start;var zoomed=visibleInterval!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;var scrolled=range.start!=this.lastRangeStart;var changedStackOption=options.stack!=this.lastStack;var changedStackSubgroupsOption=options.stackSubgroups!=this.lastStackSubgroups;var forceRestack=zoomed||scrolled||changedStackOption||changedStackSubgroupsOption;this.lastVisibleInterval=visibleInterval;this.lastRangeStart=range.start;this.lastStack=options.stack;this.lastStackSubgroups=options.stackSubgroups;this.props.lastWidth=this.props.width;var firstGroup=this._firstGroup();var firstMargin={item:margin.item,axis:margin.axis};var nonFirstMargin={item:margin.item,axis:margin.item.vertical/2};var height=0;var minHeight=margin.axis+margin.item.vertical;this.groups[BACKGROUND].redraw(range,nonFirstMargin,forceRestack);var redrawQueue={};var redrawQueueLength=0;util.forEach(this.groups,function(group,key){if(key===BACKGROUND)return;var groupMargin=group==firstGroup?firstMargin:nonFirstMargin;var returnQueue=true;redrawQueue[key]=group.redraw(range,groupMargin,forceRestack,returnQueue);redrawQueueLength=redrawQueue[key].length});var needRedraw=redrawQueueLength>0;if(needRedraw){var redrawResults={};for(var i=0;i<redrawQueueLength;i++){util.forEach(redrawQueue,function(fns,key){redrawResults[key]=fns[i]()})}util.forEach(this.groups,function(group,key){if(key===BACKGROUND)return;var groupResized=redrawResults[key];resized=groupResized||resized;height+=group.height});height=Math.max(height,minHeight)}height=Math.max(height,minHeight);frame.style.height=asSize(height);this.props.width=frame.offsetWidth;this.props.height=height;this.dom.axis.style.top=asSize(orientation==\"top\"?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height);if(this.options.rtl){this.dom.axis.style.right=\"0\"}else{this.dom.axis.style.left=\"0\"}this.initialItemSetDrawn=true;resized=this._isResized()||resized;return resized};ItemSet.prototype._firstGroup=function(){var firstGroupIndex=this.options.orientation.item==\"top\"?0:this.groupIds.length-1;var firstGroupId=this.groupIds[firstGroupIndex];var firstGroup=this.groups[firstGroupId]||this.groups[UNGROUPED];return firstGroup||null};ItemSet.prototype._updateUngrouped=function(){var ungrouped=this.groups[UNGROUPED];var item,itemId;if(this.groupsData){if(ungrouped){ungrouped.hide();delete this.groups[UNGROUPED];for(itemId in this.items){if(this.items.hasOwnProperty(itemId)){item=this.items[itemId];item.parent&&item.parent.remove(item);var groupId=this._getGroupId(item.data);var group=this.groups[groupId];group&&group.add(item)||item.hide()}}}}else{if(!ungrouped){var id=null;var data=null;ungrouped=new Group(id,data,this);this.groups[UNGROUPED]=ungrouped;for(itemId in this.items){if(this.items.hasOwnProperty(itemId)){item=this.items[itemId];ungrouped.add(item)}}ungrouped.show()}}};ItemSet.prototype.getLabelSet=function(){return this.dom.labelSet};ItemSet.prototype.setItems=function(items){var me=this,ids,oldItemsData=this.itemsData;if(!items){this.itemsData=null}else if(items instanceof DataSet||items instanceof DataView){this.itemsData=items}else{throw new TypeError(\"Data must be an instance of DataSet or DataView\")}if(oldItemsData){util.forEach(this.itemListeners,function(callback,event){oldItemsData.off(event,callback)});ids=oldItemsData.getIds();this._onRemove(ids)}if(this.itemsData){var id=this.id;util.forEach(this.itemListeners,function(callback,event){me.itemsData.on(event,callback,id)});ids=this.itemsData.getIds();this._onAdd(ids);this._updateUngrouped()}this.body.emitter.emit(\"_change\",{queue:true})};ItemSet.prototype.getItems=function(){return this.itemsData};ItemSet.prototype.setGroups=function(groups){var me=this,ids;if(this.groupsData){util.forEach(this.groupListeners,function(callback,event){me.groupsData.off(event,callback)});ids=this.groupsData.getIds();this.groupsData=null;this._onRemoveGroups(ids)}if(!groups){this.groupsData=null}else if(groups instanceof DataSet||groups instanceof DataView){this.groupsData=groups}else{throw new TypeError(\"Data must be an instance of DataSet or DataView\")}if(this.groupsData){var groupsData=this.groupsData;if(this.groupsData instanceof DataView){groupsData=this.groupsData.getDataSet()}groupsData.get().forEach(function(group){if(group.nestedGroups){group.nestedGroups.forEach(function(nestedGroupId){var updatedNestedGroup=groupsData.get(nestedGroupId);updatedNestedGroup.nestedInGroup=group.id;if(group.showNested==false){updatedNestedGroup.visible=false}groupsData.update(updatedNestedGroup)})}});var id=this.id;util.forEach(this.groupListeners,function(callback,event){me.groupsData.on(event,callback,id)});ids=this.groupsData.getIds();this._onAddGroups(ids)}this._updateUngrouped();this._order();this.body.emitter.emit(\"_change\",{queue:true})};ItemSet.prototype.getGroups=function(){return this.groupsData};ItemSet.prototype.removeItem=function(id){var item=this.itemsData.get(id),dataset=this.itemsData.getDataSet();if(item){this.options.onRemove(item,function(item){if(item){dataset.remove(id)}})}};ItemSet.prototype._getType=function(itemData){return itemData.type||this.options.type||(itemData.end?\"range\":\"box\")};ItemSet.prototype._getGroupId=function(itemData){var type=this._getType(itemData);if(type==\"background\"&&itemData.group==undefined){return BACKGROUND}else{return this.groupsData?itemData.group:UNGROUPED}};ItemSet.prototype._onUpdate=function(ids){var me=this;ids.forEach(function(id){var itemData=me.itemsData.get(id,me.itemOptions);var item=me.items[id];var type=itemData?me._getType(itemData):null;var constructor=ItemSet.types[type];var selected;if(item){if(!constructor||!(item instanceof constructor)){selected=item.selected;me._removeItem(item);item=null}else{me._updateItem(item,itemData)}}if(!item&&itemData){if(constructor){item=new constructor(itemData,me.conversion,me.options);item.id=id;me._addItem(item);if(selected){this.selection.push(id);item.select()}}else if(type==\"rangeoverflow\"){throw new TypeError('Item type \"rangeoverflow\" is deprecated. Use css styling instead: '+\".vis-item.vis-range .vis-item-content {overflow: visible;}\")}else{throw new TypeError('Unknown item type \"'+type+'\"')}}}.bind(this));this._order();this.body.emitter.emit(\"_change\",{queue:true})};ItemSet.prototype._onAdd=ItemSet.prototype._onUpdate;ItemSet.prototype._onRemove=function(ids){var count=0;var me=this;ids.forEach(function(id){var item=me.items[id];if(item){count++;me._removeItem(item)}});if(count){this._order();this.body.emitter.emit(\"_change\",{queue:true})}};ItemSet.prototype._order=function(){util.forEach(this.groups,function(group){group.order()})};ItemSet.prototype._onUpdateGroups=function(ids){this._onAddGroups(ids)};ItemSet.prototype._onAddGroups=function(ids){var me=this;ids.forEach(function(id){var groupData=me.groupsData.get(id);var group=me.groups[id];if(!group){if(id==UNGROUPED||id==BACKGROUND){throw new Error(\"Illegal group id. \"+id+\" is a reserved id.\")}var groupOptions=(0,_create2[\"default\"])(me.options);util.extend(groupOptions,{height:null});group=new Group(id,groupData,me);me.groups[id]=group;for(var itemId in me.items){if(me.items.hasOwnProperty(itemId)){var item=me.items[itemId];if(item.data.group==id){group.add(item)}}}group.order();group.show()}else{group.setData(groupData)}});this.body.emitter.emit(\"_change\",{queue:true})};ItemSet.prototype._onRemoveGroups=function(ids){var groups=this.groups;ids.forEach(function(id){var group=groups[id];if(group){group.hide();delete groups[id]}});this.markDirty();this.body.emitter.emit(\"_change\",{queue:true})};ItemSet.prototype._orderGroups=function(){if(this.groupsData){var groupIds=this.groupsData.getIds({order:this.options.groupOrder});groupIds=this._orderNestedGroups(groupIds);var changed=!util.equalArray(groupIds,this.groupIds);if(changed){var groups=this.groups;groupIds.forEach(function(groupId){groups[groupId].hide()});groupIds.forEach(function(groupId){groups[groupId].show()});this.groupIds=groupIds}return changed}else{return false}};ItemSet.prototype._orderNestedGroups=function(groupIds){var newGroupIdsOrder=[];groupIds.forEach(function(groupId){var groupData=this.groupsData.get(groupId);if(!groupData.nestedInGroup){newGroupIdsOrder.push(groupId)}if(groupData.nestedGroups){var nestedGroups=this.groupsData.get({filter:function filter(nestedGroup){return nestedGroup.nestedInGroup==groupId},order:this.options.groupOrder});var nestedGroupIds=nestedGroups.map(function(nestedGroup){return nestedGroup.id});newGroupIdsOrder=newGroupIdsOrder.concat(nestedGroupIds)}},this);return newGroupIdsOrder};ItemSet.prototype._addItem=function(item){this.items[item.id]=item;var groupId=this._getGroupId(item.data);var group=this.groups[groupId];if(!group){item.groupShowing=false}else if(group&&group.data&&group.data.showNested){item.groupShowing=true}if(group)group.add(item)};ItemSet.prototype._updateItem=function(item,itemData){item.setData(itemData);var groupId=this._getGroupId(item.data);var group=this.groups[groupId];if(!group){item.groupShowing=false}else if(group&&group.data&&group.data.showNested){item.groupShowing=true}};ItemSet.prototype._removeItem=function(item){item.hide();delete this.items[item.id];var index=this.selection.indexOf(item.id);if(index!=-1)this.selection.splice(index,1);item.parent&&item.parent.remove(item)};ItemSet.prototype._constructByEndArray=function(array){var endArray=[];for(var i=0;i<array.length;i++){if(array[i]instanceof RangeItem){endArray.push(array[i])}}return endArray};ItemSet.prototype._onTouch=function(event){this.touchParams.item=this.itemFromTarget(event);this.touchParams.dragLeftItem=event.target.dragLeftItem||false;this.touchParams.dragRightItem=event.target.dragRightItem||false;this.touchParams.itemProps=null};ItemSet.prototype._getGroupIndex=function(groupId){for(var i=0;i<this.groupIds.length;i++){if(groupId==this.groupIds[i])return i}};ItemSet.prototype._onDragStart=function(event){if(this.touchParams.itemIsDragging){return}var item=this.touchParams.item||null;var me=this;var props;if(item&&(item.selected||this.options.itemsAlwaysDraggable.item)){if(this.options.editable.overrideItems&&!this.options.editable.updateTime&&!this.options.editable.updateGroup){return}if(item.editable!=null&&!item.editable.updateTime&&!item.editable.updateGroup&&!this.options.editable.overrideItems){return}var dragLeftItem=this.touchParams.dragLeftItem;var dragRightItem=this.touchParams.dragRightItem;this.touchParams.itemIsDragging=true;this.touchParams.selectedItem=item;if(dragLeftItem){props={item:dragLeftItem,initialX:event.center.x,dragLeft:true,data:this._cloneItemData(item.data)};this.touchParams.itemProps=[props]}else if(dragRightItem){props={item:dragRightItem,initialX:event.center.x,dragRight:true,data:this._cloneItemData(item.data)};this.touchParams.itemProps=[props]}else if(this.options.editable.add&&(event.srcEvent.ctrlKey||event.srcEvent.metaKey)){this._onDragStartAddItem(event)}else{if(this.groupIds.length<1){this.redraw()}var baseGroupIndex=this._getGroupIndex(item.data.group);var itemsToDrag=this.options.itemsAlwaysDraggable.item&&!item.selected?[item.id]:this.getSelection();this.touchParams.itemProps=itemsToDrag.map(function(id){var item=me.items[id];var groupIndex=me._getGroupIndex(item.data.group);return{item:item,initialX:event.center.x,groupOffset:baseGroupIndex-groupIndex,data:this._cloneItemData(item.data)}}.bind(this))}event.stopPropagation()}else if(this.options.editable.add&&(event.srcEvent.ctrlKey||event.srcEvent.metaKey)){this._onDragStartAddItem(event)}};ItemSet.prototype._onDragStartAddItem=function(event){var xAbs;var x;var snap=this.options.snap||null;if(this.options.rtl){xAbs=util.getAbsoluteRight(this.dom.frame);x=xAbs-event.center.x+10}else{xAbs=util.getAbsoluteLeft(this.dom.frame);x=event.center.x-xAbs-10}var time=this.body.util.toTime(x);var scale=this.body.util.getScale();var step=this.body.util.getStep();var start=snap?snap(time,scale,step):time;var end=start;var itemData={type:\"range\",start:start,end:end,content:\"new item\"};var id=util.randomUUID();itemData[this.itemsData._fieldId]=id;var group=this.groupFromTarget(event);if(group){itemData.group=group.groupId}var newItem=new RangeItem(itemData,this.conversion,this.options);newItem.id=id;newItem.data=this._cloneItemData(itemData);this._addItem(newItem);this.touchParams.selectedItem=newItem;var props={item:newItem,initialX:event.center.x,data:newItem.data};if(this.options.rtl){props.dragLeft=true}else{props.dragRight=true}this.touchParams.itemProps=[props];event.stopPropagation()};ItemSet.prototype._onDrag=function(event){if(this.touchParams.itemProps){event.stopPropagation();var me=this;var snap=this.options.snap||null;var xOffset;if(this.options.rtl){xOffset=this.body.dom.root.offsetLeft+this.body.domProps.right.width}else{xOffset=this.body.dom.root.offsetLeft+this.body.domProps.left.width}var scale=this.body.util.getScale();var step=this.body.util.getStep();var selectedItem=this.touchParams.selectedItem;var updateGroupAllowed=(this.options.editable.overrideItems||selectedItem.editable==null)&&this.options.editable.updateGroup||!this.options.editable.overrideItems&&selectedItem.editable!=null&&selectedItem.editable.updateGroup;var newGroupBase=null;if(updateGroupAllowed&&selectedItem){if(selectedItem.data.group!=undefined){var group=me.groupFromTarget(event);if(group){newGroupBase=this._getGroupIndex(group.groupId)}}}this.touchParams.itemProps.forEach(function(props){var current=me.body.util.toTime(event.center.x-xOffset);var initial=me.body.util.toTime(props.initialX-xOffset);var offset;var initialStart;var initialEnd;var start;var end;if(this.options.rtl){offset=-(current-initial)}else{offset=current-initial}var itemData=this._cloneItemData(props.item.data);if(props.item.editable!=null&&!props.item.editable.updateTime&&!props.item.editable.updateGroup&&!me.options.editable.overrideItems){return}var updateTimeAllowed=(this.options.editable.overrideItems||selectedItem.editable==null)&&this.options.editable.updateTime||!this.options.editable.overrideItems&&selectedItem.editable!=null&&selectedItem.editable.updateTime;if(updateTimeAllowed){if(props.dragLeft){if(this.options.rtl){if(itemData.end!=undefined){initialEnd=util.convert(props.data.end,\"Date\");end=new Date(initialEnd.valueOf()+offset);itemData.end=snap?snap(end,scale,step):end}}else{if(itemData.start!=undefined){initialStart=util.convert(props.data.start,\"Date\");start=new Date(initialStart.valueOf()+offset);itemData.start=snap?snap(start,scale,step):start}}}else if(props.dragRight){if(this.options.rtl){if(itemData.start!=undefined){initialStart=util.convert(props.data.start,\"Date\");start=new Date(initialStart.valueOf()+offset);itemData.start=snap?snap(start,scale,step):start}}else{if(itemData.end!=undefined){initialEnd=util.convert(props.data.end,\"Date\");end=new Date(initialEnd.valueOf()+offset);itemData.end=snap?snap(end,scale,step):end}}}else{if(itemData.start!=undefined){initialStart=util.convert(props.data.start,\"Date\").valueOf();start=new Date(initialStart+offset);if(itemData.end!=undefined){initialEnd=util.convert(props.data.end,\"Date\");var duration=initialEnd.valueOf()-initialStart.valueOf();itemData.start=snap?snap(start,scale,step):start;itemData.end=new Date(itemData.start.valueOf()+duration)}else{itemData.start=snap?snap(start,scale,step):start}}}}if(updateGroupAllowed&&!props.dragLeft&&!props.dragRight&&newGroupBase!=null){if(itemData.group!=undefined){var newOffset=newGroupBase-props.groupOffset;newOffset=Math.max(0,newOffset);newOffset=Math.min(me.groupIds.length-1,newOffset);itemData.group=me.groupIds[newOffset]}}itemData=this._cloneItemData(itemData);me.options.onMoving(itemData,function(itemData){if(itemData){props.item.setData(this._cloneItemData(itemData,\"Date\"))}}.bind(this))}.bind(this));this.body.emitter.emit(\"_change\")}};ItemSet.prototype._moveToGroup=function(item,groupId){var group=this.groups[groupId];if(group&&group.groupId!=item.data.group){var oldGroup=item.parent;oldGroup.remove(item);oldGroup.order();item.data.group=group.groupId;group.add(item);group.order()}};ItemSet.prototype._onDragEnd=function(event){this.touchParams.itemIsDragging=false;if(this.touchParams.itemProps){event.stopPropagation();var me=this;var dataset=this.itemsData.getDataSet();var itemProps=this.touchParams.itemProps;this.touchParams.itemProps=null;itemProps.forEach(function(props){var id=props.item.id;var exists=me.itemsData.get(id,me.itemOptions)!=null;if(!exists){me.options.onAdd(props.item.data,function(itemData){me._removeItem(props.item);if(itemData){me.itemsData.getDataSet().add(itemData)}me.body.emitter.emit(\"_change\")})}else{var itemData=this._cloneItemData(props.item.data);me.options.onMove(itemData,function(itemData){if(itemData){itemData[dataset._fieldId]=id;dataset.update(itemData)}else{props.item.setData(props.data);me.body.emitter.emit(\"_change\")}})}}.bind(this))}};ItemSet.prototype._onGroupClick=function(event){var group=this.groupFromTarget(event);if(!group||!group.nestedGroups)return;var groupsData=this.groupsData.getDataSet();var nestingGroup=groupsData.get(group.groupId);if(nestingGroup.showNested==undefined){nestingGroup.showNested=true}nestingGroup.showNested=!nestingGroup.showNested;var nestedGroups=groupsData.get(group.nestedGroups).map(function(nestedGroup){nestedGroup.visible=nestingGroup.showNested;return nestedGroup});groupsData.update(nestedGroups.concat(nestingGroup));if(nestingGroup.showNested){util.removeClassName(group.dom.label,\"collapsed\");util.addClassName(group.dom.label,\"expanded\")}else{util.removeClassName(group.dom.label,\"expanded\");var collapsedDirClassName=this.options.rtl?\"collapsed-rtl\":\"collapsed\";util.addClassName(group.dom.label,collapsedDirClassName)}};ItemSet.prototype._onGroupDragStart=function(event){if(this.options.groupEditable.order){this.groupTouchParams.group=this.groupFromTarget(event);if(this.groupTouchParams.group){event.stopPropagation();this.groupTouchParams.originalOrder=this.groupsData.getIds({order:this.options.groupOrder})}}};ItemSet.prototype._onGroupDrag=function(event){if(this.options.groupEditable.order&&this.groupTouchParams.group){event.stopPropagation();var groupsData=this.groupsData;if(this.groupsData instanceof DataView){groupsData=this.groupsData.getDataSet()}var group=this.groupFromTarget(event);if(group&&group.height!=this.groupTouchParams.group.height){var movingUp=group.top<this.groupTouchParams.group.top;var clientY=event.center?event.center.y:event.clientY;var targetGroupTop=util.getAbsoluteTop(group.dom.foreground);var draggedGroupHeight=this.groupTouchParams.group.height;if(movingUp){if(targetGroupTop+draggedGroupHeight<clientY){return}}else{var targetGroupHeight=group.height;if(targetGroupTop+targetGroupHeight-draggedGroupHeight>clientY){return}}}if(group&&group!=this.groupTouchParams.group){var targetGroup=groupsData.get(group.groupId);var draggedGroup=groupsData.get(this.groupTouchParams.group.groupId);if(draggedGroup&&targetGroup){this.options.groupOrderSwap(draggedGroup,targetGroup,groupsData);groupsData.update(draggedGroup);groupsData.update(targetGroup)}var newOrder=groupsData.getIds({order:this.options.groupOrder});if(!util.equalArray(newOrder,this.groupTouchParams.originalOrder)){var origOrder=this.groupTouchParams.originalOrder;var draggedId=this.groupTouchParams.group.groupId;var numGroups=Math.min(origOrder.length,newOrder.length);var curPos=0;var newOffset=0;var orgOffset=0;while(curPos<numGroups){while(curPos+newOffset<numGroups&&curPos+orgOffset<numGroups&&newOrder[curPos+newOffset]==origOrder[curPos+orgOffset]){curPos++}if(curPos+newOffset>=numGroups){break}if(newOrder[curPos+newOffset]==draggedId){newOffset=1}else if(origOrder[curPos+orgOffset]==draggedId){orgOffset=1}else{var slippedPosition=newOrder.indexOf(origOrder[curPos+orgOffset]);var switchGroup=groupsData.get(newOrder[curPos+newOffset]);var shouldBeGroup=groupsData.get(origOrder[curPos+orgOffset]);this.options.groupOrderSwap(switchGroup,shouldBeGroup,groupsData);groupsData.update(switchGroup);groupsData.update(shouldBeGroup);var switchGroupId=newOrder[curPos+newOffset];newOrder[curPos+newOffset]=origOrder[curPos+orgOffset];newOrder[slippedPosition]=switchGroupId;curPos++}}}}}};ItemSet.prototype._onGroupDragEnd=function(event){if(this.options.groupEditable.order&&this.groupTouchParams.group){event.stopPropagation();var me=this;var id=me.groupTouchParams.group.groupId;var dataset=me.groupsData.getDataSet();var groupData=util.extend({},dataset.get(id));me.options.onMoveGroup(groupData,function(groupData){if(groupData){groupData[dataset._fieldId]=id;dataset.update(groupData)}else{var newOrder=dataset.getIds({order:me.options.groupOrder});if(!util.equalArray(newOrder,me.groupTouchParams.originalOrder)){var origOrder=me.groupTouchParams.originalOrder;var numGroups=Math.min(origOrder.length,newOrder.length);var curPos=0;while(curPos<numGroups){while(curPos<numGroups&&newOrder[curPos]==origOrder[curPos]){curPos++}if(curPos>=numGroups){break}var slippedPosition=newOrder.indexOf(origOrder[curPos]);var switchGroup=dataset.get(newOrder[curPos]);var shouldBeGroup=dataset.get(origOrder[curPos]);me.options.groupOrderSwap(switchGroup,shouldBeGroup,dataset);dataset.update(switchGroup);dataset.update(shouldBeGroup);var switchGroupId=newOrder[curPos];newOrder[curPos]=origOrder[curPos];newOrder[slippedPosition]=switchGroupId;curPos++}}}});me.body.emitter.emit(\"groupDragged\",{groupId:id})}};ItemSet.prototype._onSelectItem=function(event){if(!this.options.selectable)return;var ctrlKey=event.srcEvent&&(event.srcEvent.ctrlKey||event.srcEvent.metaKey);var shiftKey=event.srcEvent&&event.srcEvent.shiftKey;if(ctrlKey||shiftKey){this._onMultiSelectItem(event);return}var oldSelection=this.getSelection();var item=this.itemFromTarget(event);var selection=item?[item.id]:[];this.setSelection(selection);var newSelection=this.getSelection();if(newSelection.length>0||oldSelection.length>0){this.body.emitter.emit(\"select\",{items:newSelection,event:event})}};ItemSet.prototype._onMouseOver=function(event){var item=this.itemFromTarget(event);if(!item)return;var related=this.itemFromRelatedTarget(event);if(item===related){return}var title=item.getTitle();if(this.options.showTooltips&&title){if(this.popup==null){this.popup=new Popup(this.body.dom.root,this.options.tooltip.overflowMethod||\"flip\")}this.popup.setText(title);var container=this.body.dom.centerContainer;this.popup.setPosition(event.clientX-util.getAbsoluteLeft(container)+container.offsetLeft,event.clientY-util.getAbsoluteTop(container)+container.offsetTop);this.popup.show()}else{if(this.popup!=null){this.popup.hide()}}this.body.emitter.emit(\"itemover\",{item:item.id,event:event})};ItemSet.prototype._onMouseOut=function(event){var item=this.itemFromTarget(event);if(!item)return;var related=this.itemFromRelatedTarget(event);if(item===related){return}if(this.popup!=null){this.popup.hide()}this.body.emitter.emit(\"itemout\",{item:item.id,event:event})};ItemSet.prototype._onMouseMove=function(event){var item=this.itemFromTarget(event);if(!item)return;if(this.options.showTooltips&&this.options.tooltip.followMouse){if(this.popup){if(!this.popup.hidden){var container=this.body.dom.centerContainer;this.popup.setPosition(event.clientX-util.getAbsoluteLeft(container)+container.offsetLeft,event.clientY-util.getAbsoluteTop(container)+container.offsetTop);this.popup.show()}}}};ItemSet.prototype._onMouseWheel=function(event){if(this.touchParams.itemIsDragging){this._onDragEnd(event)}};ItemSet.prototype._onUpdateItem=function(item){if(!this.options.selectable)return;if(!this.options.editable.add)return;var me=this;if(item){var itemData=me.itemsData.get(item.id);this.options.onUpdate(itemData,function(itemData){if(itemData){me.itemsData.getDataSet().update(itemData)}})}};ItemSet.prototype._onDropObjectOnItem=function(event){var item=this.itemFromTarget(event);var objectData=JSON.parse(event.dataTransfer.getData(\"text\"));this.options.onDropObjectOnItem(objectData,item)};ItemSet.prototype._onAddItem=function(event){if(!this.options.selectable)return;if(!this.options.editable.add)return;var me=this;var snap=this.options.snap||null;var xAbs;var x;if(this.options.rtl){xAbs=util.getAbsoluteRight(this.dom.frame);x=xAbs-event.center.x}else{xAbs=util.getAbsoluteLeft(this.dom.frame);x=event.center.x-xAbs}var start=this.body.util.toTime(x);var scale=this.body.util.getScale();var step=this.body.util.getStep();var end;var newItemData;if(event.type==\"drop\"){newItemData=JSON.parse(event.dataTransfer.getData(\"text\"));newItemData.content=newItemData.content?newItemData.content:\"new item\";newItemData.start=newItemData.start?newItemData.start:snap?snap(start,scale,step):start;newItemData.type=newItemData.type||\"box\";newItemData[this.itemsData._fieldId]=newItemData.id||util.randomUUID();if(newItemData.type==\"range\"&&!newItemData.end){end=this.body.util.toTime(x+this.props.width/5);newItemData.end=snap?snap(end,scale,step):end}}else{newItemData={start:snap?snap(start,scale,step):start,content:\"new item\"};newItemData[this.itemsData._fieldId]=util.randomUUID();if(this.options.type===\"range\"){\nend=this.body.util.toTime(x+this.props.width/5);newItemData.end=snap?snap(end,scale,step):end}}var group=this.groupFromTarget(event);if(group){newItemData.group=group.groupId}newItemData=this._cloneItemData(newItemData);this.options.onAdd(newItemData,function(item){if(item){me.itemsData.getDataSet().add(item);if(event.type==\"drop\"){me.setSelection([item.id])}}})};ItemSet.prototype._onMultiSelectItem=function(event){if(!this.options.selectable)return;var item=this.itemFromTarget(event);if(item){var selection=this.options.multiselect?this.getSelection():[];var shiftKey=event.srcEvent&&event.srcEvent.shiftKey||false;if(shiftKey&&this.options.multiselect){var itemGroup=this.itemsData.get(item.id).group;var lastSelectedGroup=undefined;if(this.options.multiselectPerGroup){if(selection.length>0){lastSelectedGroup=this.itemsData.get(selection[0]).group}}if(!this.options.multiselectPerGroup||lastSelectedGroup==undefined||lastSelectedGroup==itemGroup){selection.push(item.id)}var range=ItemSet._getItemRange(this.itemsData.get(selection,this.itemOptions));if(!this.options.multiselectPerGroup||lastSelectedGroup==itemGroup){selection=[];for(var id in this.items){if(this.items.hasOwnProperty(id)){var _item=this.items[id];var start=_item.data.start;var end=_item.data.end!==undefined?_item.data.end:start;if(start>=range.min&&end<=range.max&&(!this.options.multiselectPerGroup||lastSelectedGroup==this.itemsData.get(_item.id).group)&&!(_item instanceof BackgroundItem)){selection.push(_item.id)}}}}}else{var index=selection.indexOf(item.id);if(index==-1){selection.push(item.id)}else{selection.splice(index,1)}}this.setSelection(selection);this.body.emitter.emit(\"select\",{items:this.getSelection(),event:event})}};ItemSet._getItemRange=function(itemsData){var max=null;var min=null;itemsData.forEach(function(data){if(min==null||data.start<min){min=data.start}if(data.end!=undefined){if(max==null||data.end>max){max=data.end}}else{if(max==null||data.start>max){max=data.start}}});return{min:min,max:max}};ItemSet.prototype.itemFromElement=function(element){var cur=element;while(cur){if(cur.hasOwnProperty(\"timeline-item\")){return cur[\"timeline-item\"]}cur=cur.parentNode}return null};ItemSet.prototype.itemFromTarget=function(event){return this.itemFromElement(event.target)};ItemSet.prototype.itemFromRelatedTarget=function(event){return this.itemFromElement(event.relatedTarget)};ItemSet.prototype.groupFromTarget=function(event){var clientY=event.center?event.center.y:event.clientY;var groupIds=this.groupIds;if(groupIds.length<=0&&this.groupsData){groupIds=this.groupsData.getIds({order:this.options.groupOrder})}for(var i=0;i<groupIds.length;i++){var groupId=groupIds[i];var group=this.groups[groupId];var foreground=group.dom.foreground;var top=util.getAbsoluteTop(foreground);if(clientY>top&&clientY<top+foreground.offsetHeight){return group}if(this.options.orientation.item===\"top\"){if(i===this.groupIds.length-1&&clientY>top){return group}}else{if(i===0&&clientY<top+foreground.offset){return group}}}return null};ItemSet.itemSetFromTarget=function(event){var target=event.target;while(target){if(target.hasOwnProperty(\"timeline-itemset\")){return target[\"timeline-itemset\"]}target=target.parentNode}return null};ItemSet.prototype._cloneItemData=function(itemData,type){var clone=util.extend({},itemData);if(!type){type=this.itemsData.getDataSet()._options.type}if(clone.start!=undefined){clone.start=util.convert(clone.start,type&&type.start||\"Date\")}if(clone.end!=undefined){clone.end=util.convert(clone.end,type&&type.end||\"Date\")}return clone};module.exports=ItemSet},function(module,exports,__webpack_require__){\"use strict\";var EPSILON=.001;exports.orderByStart=function(items){items.sort(function(a,b){return a.data.start-b.data.start})};exports.orderByEnd=function(items){items.sort(function(a,b){var aTime=\"end\"in a.data?a.data.end:a.data.start,bTime=\"end\"in b.data?b.data.end:b.data.start;return aTime-bTime})};exports.stack=function(items,margin,force){if(force){for(var i=0;i<items.length;i++){items[i].top=null}}for(var i=0;i<items.length;i++){var item=items[i];if(item.stack&&item.top===null){item.top=margin.axis;do{var collidingItem=null;for(var j=0,jj=items.length;j<jj;j++){var other=items[j];if(other.top!==null&&other!==item&&other.stack&&exports.collision(item,other,margin.item,other.options.rtl)){collidingItem=other;break}}if(collidingItem!=null){item.top=collidingItem.top+collidingItem.height+margin.item.vertical}}while(collidingItem)}}};exports.substack=function(items,margin,subgroup){for(var i=0;i<items.length;i++){items[i].top=null}var subgroupHeight=subgroup.height;for(i=0;i<items.length;i++){var item=items[i];if(item.stack&&item.top===null){item.top=item.baseTop;do{var collidingItem=null;for(var j=0,jj=items.length;j<jj;j++){var other=items[j];if(other.top!==null&&other!==item&&exports.collision(item,other,margin.item,other.options.rtl)){collidingItem=other;break}}if(collidingItem!=null){item.top=collidingItem.top+collidingItem.height+margin.item.vertical}if(item.top+item.height>subgroupHeight){subgroupHeight=item.top+item.height}}while(collidingItem)}}subgroup.height=subgroupHeight-subgroup.top+.5*margin.item.vertical};exports.nostack=function(items,margin,subgroups,stackSubgroups){for(var i=0;i<items.length;i++){if(items[i].data.subgroup==undefined){items[i].top=margin.item.vertical}else if(items[i].data.subgroup!==undefined&&stackSubgroups){var newTop=0;for(var subgroup in subgroups){if(subgroups.hasOwnProperty(subgroup)){if(subgroups[subgroup].visible==true&&subgroups[subgroup].index<subgroups[items[i].data.subgroup].index){newTop+=subgroups[subgroup].height;subgroups[items[i].data.subgroup].top=newTop}}}items[i].top=newTop+.5*margin.item.vertical}}if(!stackSubgroups){exports.stackSubgroups(items,margin,subgroups)}};exports.stackSubgroups=function(items,margin,subgroups){for(var subgroup in subgroups){if(subgroups.hasOwnProperty(subgroup)){subgroups[subgroup].top=0;do{var collidingItem=null;for(var otherSubgroup in subgroups){if(subgroups[otherSubgroup].top!==null&&otherSubgroup!==subgroup&&subgroups[subgroup].index>subgroups[otherSubgroup].index&&exports.collisionByTimes(subgroups[subgroup],subgroups[otherSubgroup])){collidingItem=subgroups[otherSubgroup];break}}if(collidingItem!=null){subgroups[subgroup].top=collidingItem.top+collidingItem.height}}while(collidingItem)}}for(var i=0;i<items.length;i++){if(items[i].data.subgroup!==undefined){items[i].top=subgroups[items[i].data.subgroup].top+.5*margin.item.vertical}}};exports.stackSubgroupsWithInnerStack=function(subgroupItems,margin,subgroups){var doSubStack=false;var subgroupOrder=[];for(var subgroup in subgroups){if(subgroups[subgroup].hasOwnProperty(\"index\")){subgroupOrder[subgroups[subgroup].index]=subgroup}else{subgroupOrder.push(subgroup)}}for(var j=0;j<subgroupOrder.length;j++){subgroup=subgroupOrder[j];if(subgroups.hasOwnProperty(subgroup)){doSubStack=doSubStack||subgroups[subgroup].stack;subgroups[subgroup].top=0;for(var otherSubgroup in subgroups){if(subgroups[otherSubgroup].visible&&subgroups[subgroup].index>subgroups[otherSubgroup].index){subgroups[subgroup].top+=subgroups[otherSubgroup].height}}var items=subgroupItems[subgroup];for(var i=0;i<items.length;i++){if(items[i].data.subgroup!==undefined){items[i].top=subgroups[items[i].data.subgroup].top+.5*margin.item.vertical;if(subgroups[subgroup].stack){items[i].baseTop=items[i].top}}}if(doSubStack&&subgroups[subgroup].stack){exports.substack(subgroupItems[subgroup],margin,subgroups[subgroup])}}}};exports.collision=function(a,b,margin,rtl){if(rtl){return a.right-margin.horizontal+EPSILON<b.right+b.width&&a.right+a.width+margin.horizontal-EPSILON>b.right&&a.top-margin.vertical+EPSILON<b.top+b.height&&a.top+a.height+margin.vertical-EPSILON>b.top}else{return a.left-margin.horizontal+EPSILON<b.left+b.width&&a.left+a.width+margin.horizontal-EPSILON>b.left&&a.top-margin.vertical+EPSILON<b.top+b.height&&a.top+a.height+margin.vertical-EPSILON>b.top}};exports.collisionByTimes=function(a,b){return a.start<=b.start&&a.end>=b.start&&a.top<b.top+b.height&&a.top+a.height>b.top||b.start<=a.start&&b.end>=a.start&&b.top<a.top+a.height&&b.top+b.height>a.top}},function(module,exports,__webpack_require__){\"use strict\";var Item=__webpack_require__(38);function BoxItem(data,conversion,options){this.props={dot:{width:0,height:0},line:{width:0,height:0}};this.options=options;if(data){if(data.start==undefined){throw new Error('Property \"start\" missing in item '+data)}}Item.call(this,data,conversion,options)}BoxItem.prototype=new Item(null,null,null);BoxItem.prototype.isVisible=function(range){var isVisible;var align=this.options.align;var widthInMs=this.width*range.getMillisecondsPerPixel();if(align==\"right\"){isVisible=this.data.start.getTime()>range.start&&this.data.start.getTime()-widthInMs<range.end}else if(align==\"left\"){isVisible=this.data.start.getTime()+widthInMs>range.start&&this.data.start.getTime()<range.end}else{isVisible=this.data.start.getTime()+widthInMs/2>range.start&&this.data.start.getTime()-widthInMs/2<range.end}return isVisible};BoxItem.prototype._createDomElement=function(){if(!this.dom){this.dom={};this.dom.box=document.createElement(\"DIV\");this.dom.content=document.createElement(\"DIV\");this.dom.content.className=\"vis-item-content\";this.dom.box.appendChild(this.dom.content);this.dom.line=document.createElement(\"DIV\");this.dom.line.className=\"vis-line\";this.dom.dot=document.createElement(\"DIV\");this.dom.dot.className=\"vis-dot\";this.dom.box[\"timeline-item\"]=this;this.dirty=true}};BoxItem.prototype._appendDomElement=function(){if(!this.parent){throw new Error(\"Cannot redraw item: no parent attached\")}if(!this.dom.box.parentNode){var foreground=this.parent.dom.foreground;if(!foreground)throw new Error(\"Cannot redraw item: parent has no foreground container element\");foreground.appendChild(this.dom.box)}if(!this.dom.line.parentNode){var background=this.parent.dom.background;if(!background)throw new Error(\"Cannot redraw item: parent has no background container element\");background.appendChild(this.dom.line)}if(!this.dom.dot.parentNode){var axis=this.parent.dom.axis;if(!background)throw new Error(\"Cannot redraw item: parent has no axis container element\");axis.appendChild(this.dom.dot)}this.displayed=true};BoxItem.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content);this._updateDataAttributes(this.dom.box);this._updateStyle(this.dom.box);var editable=this.editable.updateTime||this.editable.updateGroup;var className=(this.data.className?\" \"+this.data.className:\"\")+(this.selected?\" vis-selected\":\"\")+(editable?\" vis-editable\":\" vis-readonly\");this.dom.box.className=\"vis-item vis-box\"+className;this.dom.line.className=\"vis-item vis-line\"+className;this.dom.dot.className=\"vis-item vis-dot\"+className}};BoxItem.prototype._getDomComponentsSizes=function(){return{previous:{right:this.dom.box.style.right,left:this.dom.box.style.left},dot:{height:this.dom.dot.offsetHeight,width:this.dom.dot.offsetWidth},line:{width:this.dom.line.offsetWidth},box:{width:this.dom.box.offsetWidth,height:this.dom.box.offsetHeight}}};BoxItem.prototype._updateDomComponentsSizes=function(sizes){if(this.options.rtl){this.dom.box.style.right=\"0px\"}else{this.dom.box.style.left=\"0px\"}this.props.dot.height=sizes.dot.height;this.props.dot.width=sizes.dot.width;this.props.line.width=sizes.line.width;this.width=sizes.box.width;this.height=sizes.box.height;if(this.options.rtl){this.dom.box.style.right=sizes.previous.right}else{this.dom.box.style.left=sizes.previous.left}this.dirty=false};BoxItem.prototype._repaintDomAdditionals=function(){this._repaintOnItemUpdateTimeTooltip(this.dom.box);this._repaintDragCenter();this._repaintDeleteButton(this.dom.box)};BoxItem.prototype.redraw=function(returnQueue){var sizes;var queue=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){if(this.dirty){sizes=this._getDomComponentsSizes()}}.bind(this),function(){if(this.dirty){this._updateDomComponentsSizes.bind(this)(sizes)}}.bind(this),this._repaintDomAdditionals.bind(this)];if(returnQueue){return queue}else{var result;queue.forEach(function(fn){result=fn()});return result}};BoxItem.prototype.show=function(){if(!this.displayed){this.redraw()}};BoxItem.prototype.hide=function(){if(this.displayed){var dom=this.dom;if(dom.box.parentNode)dom.box.parentNode.removeChild(dom.box);if(dom.line.parentNode)dom.line.parentNode.removeChild(dom.line);if(dom.dot.parentNode)dom.dot.parentNode.removeChild(dom.dot);this.displayed=false}};BoxItem.prototype.repositionX=function(){var start=this.conversion.toScreen(this.data.start);var align=this.options.align;if(align==\"right\"){if(this.options.rtl){this.right=start-this.width;this.dom.box.style.right=this.right+\"px\";this.dom.line.style.right=start-this.props.line.width+\"px\";this.dom.dot.style.right=start-this.props.line.width/2-this.props.dot.width/2+\"px\"}else{this.left=start-this.width;this.dom.box.style.left=this.left+\"px\";this.dom.line.style.left=start-this.props.line.width+\"px\";this.dom.dot.style.left=start-this.props.line.width/2-this.props.dot.width/2+\"px\"}}else if(align==\"left\"){if(this.options.rtl){this.right=start;this.dom.box.style.right=this.right+\"px\";this.dom.line.style.right=start+\"px\";this.dom.dot.style.right=start+this.props.line.width/2-this.props.dot.width/2+\"px\"}else{this.left=start;this.dom.box.style.left=this.left+\"px\";this.dom.line.style.left=start+\"px\";this.dom.dot.style.left=start+this.props.line.width/2-this.props.dot.width/2+\"px\"}}else{if(this.options.rtl){this.right=start-this.width/2;this.dom.box.style.right=this.right+\"px\";this.dom.line.style.right=start-this.props.line.width+\"px\";this.dom.dot.style.right=start-this.props.dot.width/2+\"px\"}else{this.left=start-this.width/2;this.dom.box.style.left=this.left+\"px\";this.dom.line.style.left=start-this.props.line.width/2+\"px\";this.dom.dot.style.left=start-this.props.dot.width/2+\"px\"}}};BoxItem.prototype.repositionY=function(){var orientation=this.options.orientation.item;var box=this.dom.box;var line=this.dom.line;var dot=this.dom.dot;if(orientation==\"top\"){box.style.top=(this.top||0)+\"px\";line.style.top=\"0\";line.style.height=this.parent.top+this.top+1+\"px\";line.style.bottom=\"\"}else{var itemSetHeight=this.parent.itemSet.props.height;var lineHeight=itemSetHeight-this.parent.top-this.parent.height+this.top;box.style.top=(this.parent.height-this.top-this.height||0)+\"px\";line.style.top=itemSetHeight-lineHeight+\"px\";line.style.bottom=\"0\"}dot.style.top=-this.props.dot.height/2+\"px\"};BoxItem.prototype.getWidthLeft=function(){return this.width/2};BoxItem.prototype.getWidthRight=function(){return this.width/2};module.exports=BoxItem},function(module,exports,__webpack_require__){\"use strict\";var Item=__webpack_require__(38);function PointItem(data,conversion,options){this.props={dot:{top:0,width:0,height:0},content:{height:0,marginLeft:0,marginRight:0}};this.options=options;if(data){if(data.start==undefined){throw new Error('Property \"start\" missing in item '+data)}}Item.call(this,data,conversion,options)}PointItem.prototype=new Item(null,null,null);PointItem.prototype.isVisible=function(range){var widthInMs=this.width*range.getMillisecondsPerPixel();return this.data.start.getTime()+widthInMs>range.start&&this.data.start<range.end};PointItem.prototype._createDomElement=function(){if(!this.dom){this.dom={};this.dom.point=document.createElement(\"div\");this.dom.content=document.createElement(\"div\");this.dom.content.className=\"vis-item-content\";this.dom.point.appendChild(this.dom.content);this.dom.dot=document.createElement(\"div\");this.dom.point.appendChild(this.dom.dot);this.dom.point[\"timeline-item\"]=this;this.dirty=true}};PointItem.prototype._appendDomElement=function(){if(!this.parent){throw new Error(\"Cannot redraw item: no parent attached\")}if(!this.dom.point.parentNode){var foreground=this.parent.dom.foreground;if(!foreground){throw new Error(\"Cannot redraw item: parent has no foreground container element\")}foreground.appendChild(this.dom.point)}this.displayed=true};PointItem.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content);this._updateDataAttributes(this.dom.point);this._updateStyle(this.dom.point);var editable=this.editable.updateTime||this.editable.updateGroup;var className=(this.data.className?\" \"+this.data.className:\"\")+(this.selected?\" vis-selected\":\"\")+(editable?\" vis-editable\":\" vis-readonly\");this.dom.point.className=\"vis-item vis-point\"+className;this.dom.dot.className=\"vis-item vis-dot\"+className}};PointItem.prototype._getDomComponentsSizes=function(){return{dot:{width:this.dom.dot.offsetWidth,height:this.dom.dot.offsetHeight},content:{width:this.dom.content.offsetWidth,height:this.dom.content.offsetHeight},point:{width:this.dom.point.offsetWidth,height:this.dom.point.offsetHeight}}};PointItem.prototype._updateDomComponentsSizes=function(sizes){this.props.dot.width=sizes.dot.width;this.props.dot.height=sizes.dot.height;this.props.content.height=sizes.content.height;if(this.options.rtl){this.dom.content.style.marginRight=2*this.props.dot.width+\"px\"}else{this.dom.content.style.marginLeft=2*this.props.dot.width+\"px\"}this.width=sizes.point.width;this.height=sizes.point.height;this.dom.dot.style.top=(this.height-this.props.dot.height)/2+\"px\";if(this.options.rtl){this.dom.dot.style.right=this.props.dot.width/2+\"px\"}else{this.dom.dot.style.left=this.props.dot.width/2+\"px\"}this.dirty=false};PointItem.prototype._repaintDomAdditionals=function(){this._repaintOnItemUpdateTimeTooltip(this.dom.point);this._repaintDragCenter();this._repaintDeleteButton(this.dom.point)};PointItem.prototype.redraw=function(returnQueue){var sizes;var queue=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){if(this.dirty){sizes=this._getDomComponentsSizes()}}.bind(this),function(){if(this.dirty){this._updateDomComponentsSizes.bind(this)(sizes)}}.bind(this),this._repaintDomAdditionals.bind(this)];if(returnQueue){return queue}else{var result;queue.forEach(function(fn){result=fn()});return result}};PointItem.prototype.show=function(){if(!this.displayed){this.redraw()}};PointItem.prototype.hide=function(){if(this.displayed){if(this.dom.point.parentNode){this.dom.point.parentNode.removeChild(this.dom.point)}this.displayed=false}};PointItem.prototype.repositionX=function(){var start=this.conversion.toScreen(this.data.start);if(this.options.rtl){this.right=start-this.props.dot.width;this.dom.point.style.right=this.right+\"px\"}else{this.left=start-this.props.dot.width;this.dom.point.style.left=this.left+\"px\"}};PointItem.prototype.repositionY=function(){var orientation=this.options.orientation.item;var point=this.dom.point;if(orientation==\"top\"){point.style.top=this.top+\"px\"}else{point.style.top=this.parent.height-this.top-this.height+\"px\"}};PointItem.prototype.getWidthLeft=function(){return this.props.dot.width};PointItem.prototype.getWidthRight=function(){return this.props.dot.width};module.exports=PointItem},function(module,exports,__webpack_require__){\"use strict\";var Item=__webpack_require__(38);var BackgroundGroup=__webpack_require__(69);var RangeItem=__webpack_require__(70);function BackgroundItem(data,conversion,options){this.props={content:{width:0}};this.overflow=false;if(data){if(data.start==undefined){throw new Error('Property \"start\" missing in item '+data.id)}if(data.end==undefined){throw new Error('Property \"end\" missing in item '+data.id)}}Item.call(this,data,conversion,options)}BackgroundItem.prototype=new Item(null,null,null);BackgroundItem.prototype.baseClassName=\"vis-item vis-background\";BackgroundItem.prototype.stack=false;BackgroundItem.prototype.isVisible=function(range){return this.data.start<range.end&&this.data.end>range.start};BackgroundItem.prototype._createDomElement=function(){if(!this.dom){this.dom={};this.dom.box=document.createElement(\"div\");this.dom.frame=document.createElement(\"div\");this.dom.frame.className=\"vis-item-overflow\";this.dom.box.appendChild(this.dom.frame);this.dom.content=document.createElement(\"div\");this.dom.content.className=\"vis-item-content\";this.dom.frame.appendChild(this.dom.content);this.dirty=true}};BackgroundItem.prototype._appendDomElement=function(){if(!this.parent){throw new Error(\"Cannot redraw item: no parent attached\")}if(!this.dom.box.parentNode){var background=this.parent.dom.background;if(!background){throw new Error(\"Cannot redraw item: parent has no background container element\")}background.appendChild(this.dom.box)}this.displayed=true};BackgroundItem.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content);this._updateDataAttributes(this.dom.content);this._updateStyle(this.dom.box);var className=(this.data.className?\" \"+this.data.className:\"\")+(this.selected?\" vis-selected\":\"\");this.dom.box.className=this.baseClassName+className}};BackgroundItem.prototype._getDomComponentsSizes=function(){this.overflow=window.getComputedStyle(this.dom.content).overflow!==\"hidden\";return{content:{width:this.dom.content.offsetWidth}}};BackgroundItem.prototype._updateDomComponentsSizes=function(sizes){this.props.content.width=sizes.content.width;this.height=0;this.dirty=false};BackgroundItem.prototype._repaintDomAdditionals=function(){};BackgroundItem.prototype.redraw=function(returnQueue){var sizes;var queue=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){if(this.dirty){sizes=this._getDomComponentsSizes.bind(this)()}}.bind(this),function(){if(this.dirty){this._updateDomComponentsSizes.bind(this)(sizes)}}.bind(this),this._repaintDomAdditionals.bind(this)];if(returnQueue){return queue}else{var result;queue.forEach(function(fn){result=fn()});return result}};BackgroundItem.prototype.show=RangeItem.prototype.show;BackgroundItem.prototype.hide=RangeItem.prototype.hide;BackgroundItem.prototype.repositionX=RangeItem.prototype.repositionX;BackgroundItem.prototype.repositionY=function(margin){var height;var orientation=this.options.orientation.item;if(this.data.subgroup!==undefined){var itemSubgroup=this.data.subgroup;this.dom.box.style.height=this.parent.subgroups[itemSubgroup].height+\"px\";if(orientation==\"top\"){this.dom.box.style.top=this.parent.top+this.parent.subgroups[itemSubgroup].top+\"px\"}else{this.dom.box.style.top=this.parent.top+this.parent.height-this.parent.subgroups[itemSubgroup].top-this.parent.subgroups[itemSubgroup].height+\"px\"}this.dom.box.style.bottom=\"\"}else{if(this.parent instanceof BackgroundGroup){height=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height);this.dom.box.style.bottom=orientation==\"bottom\"?\"0\":\"\";this.dom.box.style.top=orientation==\"top\"?\"0\":\"\"}else{height=this.parent.height;this.dom.box.style.top=this.parent.top+\"px\";this.dom.box.style.bottom=\"\"}}this.dom.box.style.height=height+\"px\"};module.exports=BackgroundItem},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Popup=function(){function Popup(container,overflowMethod){(0,_classCallCheck3[\"default\"])(this,Popup);this.container=container;this.overflowMethod=overflowMethod||\"cap\";this.x=0;this.y=0;this.padding=5;this.hidden=false;this.frame=document.createElement(\"div\");this.frame.className=\"vis-tooltip\";this.container.appendChild(this.frame)}(0,_createClass3[\"default\"])(Popup,[{key:\"setPosition\",value:function setPosition(x,y){this.x=parseInt(x);this.y=parseInt(y)}},{key:\"setText\",value:function setText(content){if(content instanceof Element){this.frame.innerHTML=\"\";this.frame.appendChild(content)}else{this.frame.innerHTML=content}}},{key:\"show\",value:function show(doShow){if(doShow===undefined){doShow=true}if(doShow===true){var height=this.frame.clientHeight;var width=this.frame.clientWidth;var maxHeight=this.frame.parentNode.clientHeight;var maxWidth=this.frame.parentNode.clientWidth;var left=0,top=0;if(this.overflowMethod==\"flip\"){var isLeft=false,isTop=true;if(this.y-height<this.padding){isTop=false}if(this.x+width>maxWidth-this.padding){isLeft=true}if(isLeft){left=this.x-width}else{left=this.x}if(isTop){top=this.y-height}else{top=this.y}}else{top=this.y-height;if(top+height+this.padding>maxHeight){top=maxHeight-height-this.padding}if(top<this.padding){top=this.padding}left=this.x;if(left+width+this.padding>maxWidth){left=maxWidth-width-this.padding}if(left<this.padding){left=this.padding}}this.frame.style.left=left+\"px\";this.frame.style.top=top+\"px\";this.frame.style.visibility=\"visible\";this.hidden=false}else{this.hide()}}},{key:\"hide\",value:function hide(){this.hidden=true;this.frame.style.left=\"0\";this.frame.style.top=\"0\";this.frame.style.visibility=\"hidden\"}},{key:\"destroy\",value:function destroy(){this.frame.parentNode.removeChild(this.frame)}}]);return Popup}();exports[\"default\"]=Popup},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var string=\"string\";var bool=\"boolean\";var number=\"number\";var array=\"array\";var date=\"date\";var object=\"object\";var dom=\"dom\";var moment=\"moment\";var any=\"any\";var allOptions={configure:{enabled:{boolean:bool},filter:{boolean:bool,function:\"function\"},container:{dom:dom},__type__:{object:object,boolean:bool,function:\"function\"}},align:{string:string},rtl:{boolean:bool,undefined:\"undefined\"},rollingMode:{follow:{boolean:bool},offset:{number:number,undefined:\"undefined\"},__type__:{object:object}},verticalScroll:{boolean:bool,undefined:\"undefined\"},horizontalScroll:{boolean:bool,undefined:\"undefined\"},autoResize:{boolean:bool},throttleRedraw:{number:number},clickToUse:{boolean:bool},dataAttributes:{string:string,array:array},editable:{add:{boolean:bool,undefined:\"undefined\"},remove:{boolean:bool,undefined:\"undefined\"},updateGroup:{boolean:bool,undefined:\"undefined\"},updateTime:{boolean:bool,undefined:\"undefined\"},overrideItems:{boolean:bool,undefined:\"undefined\"},__type__:{boolean:bool,object:object}},end:{number:number,date:date,string:string,moment:moment},format:{minorLabels:{millisecond:{string:string,undefined:\"undefined\"},second:{string:string,undefined:\"undefined\"},minute:{string:string,undefined:\"undefined\"},hour:{string:string,undefined:\"undefined\"},weekday:{string:string,undefined:\"undefined\"},day:{string:string,undefined:\"undefined\"},week:{string:string,undefined:\"undefined\"},month:{string:string,undefined:\"undefined\"},year:{string:string,undefined:\"undefined\"},__type__:{object:object,function:\"function\"}},majorLabels:{millisecond:{string:string,undefined:\"undefined\"},second:{string:string,undefined:\"undefined\"},minute:{string:string,undefined:\"undefined\"},hour:{string:string,undefined:\"undefined\"},weekday:{string:string,undefined:\"undefined\"},day:{string:string,undefined:\"undefined\"},week:{string:string,undefined:\"undefined\"},month:{string:string,undefined:\"undefined\"},year:{string:string,undefined:\"undefined\"},__type__:{object:object,function:\"function\"}},__type__:{object:object}},moment:{function:\"function\"},groupOrder:{string:string,function:\"function\"},groupEditable:{add:{boolean:bool,undefined:\"undefined\"},remove:{boolean:bool,undefined:\"undefined\"},order:{boolean:bool,undefined:\"undefined\"},__type__:{boolean:bool,object:object}},groupOrderSwap:{function:\"function\"},height:{string:string,number:number},hiddenDates:{start:{date:date,number:number,string:string,moment:moment},end:{date:date,number:number,string:string,moment:moment},repeat:{string:string},__type__:{object:object,array:array}},itemsAlwaysDraggable:{item:{boolean:bool,undefined:\"undefined\"},range:{boolean:bool,undefined:\"undefined\"},__type__:{boolean:bool,object:object}},limitSize:{boolean:bool},locale:{string:string},locales:{__any__:{any:any},__type__:{object:object}},margin:{axis:{number:number},item:{horizontal:{number:number,undefined:\"undefined\"},vertical:{number:number,undefined:\"undefined\"},__type__:{object:object,number:number}},__type__:{object:object,number:number}},max:{date:date,number:number,string:string,moment:moment},maxHeight:{number:number,string:string},maxMinorChars:{number:number},min:{date:date,number:number,string:string,moment:moment},minHeight:{number:number,string:string},moveable:{boolean:bool},multiselect:{boolean:bool},multiselectPerGroup:{boolean:bool},onAdd:{function:\"function\"},onDropObjectOnItem:{function:\"function\"},onUpdate:{function:\"function\"},onMove:{function:\"function\"},onMoving:{function:\"function\"},onRemove:{function:\"function\"},onAddGroup:{function:\"function\"},onMoveGroup:{function:\"function\"},onRemoveGroup:{function:\"function\"},onInitialDrawComplete:{function:\"function\"},order:{function:\"function\"},orientation:{axis:{string:string,undefined:\"undefined\"},item:{string:string,undefined:\"undefined\"},__type__:{string:string,object:object}},selectable:{boolean:bool},showCurrentTime:{boolean:bool},showMajorLabels:{boolean:bool},showMinorLabels:{boolean:bool},stack:{boolean:bool},stackSubgroups:{boolean:bool},snap:{function:\"function\",null:\"null\"},start:{date:date,number:number,string:string,moment:moment},template:{function:\"function\"},groupTemplate:{function:\"function\"},visibleFrameTemplate:{string:string,function:\"function\"},showTooltips:{boolean:bool},tooltip:{followMouse:{boolean:bool},overflowMethod:{string:[\"cap\",\"flip\"]},__type__:{object:object}},tooltipOnItemUpdateTime:{template:{function:\"function\"},__type__:{boolean:bool,object:object}},timeAxis:{scale:{string:string,undefined:\"undefined\"},step:{number:number,undefined:\"undefined\"},__type__:{object:object}},type:{string:string},width:{string:string,number:number},zoomable:{boolean:bool},zoomKey:{string:[\"ctrlKey\",\"altKey\",\"metaKey\",\"\"]},zoomMax:{number:number},zoomMin:{number:number},__type__:{object:object}};var configureOptions={global:{align:[\"center\",\"left\",\"right\"],direction:false,autoResize:true,clickToUse:false,editable:{add:false,remove:false,updateGroup:false,updateTime:false},end:\"\",format:{minorLabels:{millisecond:\"SSS\",second:\"s\",minute:\"HH:mm\",hour:\"HH:mm\",weekday:\"ddd D\",day:\"D\",week:\"w\",month:\"MMM\",year:\"YYYY\"},majorLabels:{millisecond:\"HH:mm:ss\",second:\"D MMMM HH:mm\",minute:\"ddd D MMMM\",hour:\"ddd D MMMM\",weekday:\"MMMM YYYY\",day:\"MMMM YYYY\",week:\"MMMM YYYY\",month:\"YYYY\",year:\"\"}},groupsDraggable:false,height:\"\",locale:\"\",margin:{axis:[20,0,100,1],item:{horizontal:[10,0,100,1],vertical:[10,0,100,1]}},max:\"\",maxHeight:\"\",maxMinorChars:[7,0,20,1],min:\"\",minHeight:\"\",moveable:false,multiselect:false,multiselectPerGroup:false,orientation:{axis:[\"both\",\"bottom\",\"top\"],item:[\"bottom\",\"top\"]},selectable:true,showCurrentTime:false,showMajorLabels:true,showMinorLabels:true,stack:true,stackSubgroups:true,start:\"\",showTooltips:true,tooltip:{followMouse:false,overflowMethod:\"flip\"},tooltipOnItemUpdateTime:false,type:[\"box\",\"point\",\"range\",\"background\"],width:\"100%\",zoomable:true,zoomKey:[\"ctrlKey\",\"altKey\",\"metaKey\",\"\"],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1]}};exports.allOptions=allOptions;exports.configureOptions=configureOptions},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DOMutil=__webpack_require__(14);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Component=__webpack_require__(16);var DataAxis=__webpack_require__(107);var GraphGroup=__webpack_require__(109);var Legend=__webpack_require__(112);var Bars=__webpack_require__(110)\n;var Lines=__webpack_require__(111);var Points=__webpack_require__(72);var UNGROUPED=\"__ungrouped__\";function LineGraph(body,options){this.id=util.randomUUID();this.body=body;this.defaultOptions={yAxisOrientation:\"left\",defaultGroup:\"default\",sort:true,sampling:true,stack:false,graphHeight:\"400px\",shaded:{enabled:false,orientation:\"bottom\"},style:\"line\",barChart:{width:50,sideBySide:false,align:\"center\"},interpolation:{enabled:true,parametrization:\"centripetal\",alpha:.5},drawPoints:{enabled:true,size:6,style:\"square\"},dataAxis:{},legend:{},groups:{visibility:{}}};this.options=util.extend({},this.defaultOptions);this.dom={};this.props={};this.hammer=null;this.groups={};this.abortedGraphUpdate=false;this.updateSVGheight=false;this.updateSVGheightOnResize=false;this.forceGraphUpdate=true;var me=this;this.itemsData=null;this.groupsData=null;this.itemListeners={add:function add(event,params,senderId){me._onAdd(params.items)},update:function update(event,params,senderId){me._onUpdate(params.items)},remove:function remove(event,params,senderId){me._onRemove(params.items)}};this.groupListeners={add:function add(event,params,senderId){me._onAddGroups(params.items)},update:function update(event,params,senderId){me._onUpdateGroups(params.items)},remove:function remove(event,params,senderId){me._onRemoveGroups(params.items)}};this.items={};this.selection=[];this.lastStart=this.body.range.start;this.touchParams={};this.svgElements={};this.setOptions(options);this.groupsUsingDefaultStyles=[0];this.body.emitter.on(\"rangechanged\",function(){me.lastStart=me.body.range.start;me.svg.style.left=util.option.asSize(-me.props.width);me.forceGraphUpdate=true;me.redraw.call(me)});this._create();this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups}}LineGraph.prototype=new Component;LineGraph.prototype._create=function(){var frame=document.createElement(\"div\");frame.className=\"vis-line-graph\";this.dom.frame=frame;this.svg=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");this.svg.style.position=\"relative\";this.svg.style.height=(\"\"+this.options.graphHeight).replace(\"px\",\"\")+\"px\";this.svg.style.display=\"block\";frame.appendChild(this.svg);this.options.dataAxis.orientation=\"left\";this.yAxisLeft=new DataAxis(this.body,this.options.dataAxis,this.svg,this.options.groups);this.options.dataAxis.orientation=\"right\";this.yAxisRight=new DataAxis(this.body,this.options.dataAxis,this.svg,this.options.groups);delete this.options.dataAxis.orientation;this.legendLeft=new Legend(this.body,this.options.legend,\"left\",this.options.groups);this.legendRight=new Legend(this.body,this.options.legend,\"right\",this.options.groups);this.show()};LineGraph.prototype.setOptions=function(options){if(options){var fields=[\"sampling\",\"defaultGroup\",\"stack\",\"height\",\"graphHeight\",\"yAxisOrientation\",\"style\",\"barChart\",\"dataAxis\",\"sort\",\"groups\"];if(options.graphHeight===undefined&&options.height!==undefined){this.updateSVGheight=true;this.updateSVGheightOnResize=true}else if(this.body.domProps.centerContainer.height!==undefined&&options.graphHeight!==undefined){if(parseInt((options.graphHeight+\"\").replace(\"px\",\"\"))<this.body.domProps.centerContainer.height){this.updateSVGheight=true}}util.selectiveDeepExtend(fields,this.options,options);util.mergeOptions(this.options,options,\"interpolation\");util.mergeOptions(this.options,options,\"drawPoints\");util.mergeOptions(this.options,options,\"shaded\");util.mergeOptions(this.options,options,\"legend\");if(options.interpolation){if((0,_typeof3[\"default\"])(options.interpolation)==\"object\"){if(options.interpolation.parametrization){if(options.interpolation.parametrization==\"uniform\"){this.options.interpolation.alpha=0}else if(options.interpolation.parametrization==\"chordal\"){this.options.interpolation.alpha=1}else{this.options.interpolation.parametrization=\"centripetal\";this.options.interpolation.alpha=.5}}}}if(this.yAxisLeft){if(options.dataAxis!==undefined){this.yAxisLeft.setOptions(this.options.dataAxis);this.yAxisRight.setOptions(this.options.dataAxis)}}if(this.legendLeft){if(options.legend!==undefined){this.legendLeft.setOptions(this.options.legend);this.legendRight.setOptions(this.options.legend)}}if(this.groups.hasOwnProperty(UNGROUPED)){this.groups[UNGROUPED].setOptions(options)}}if(this.dom.frame){this.forceGraphUpdate=true;this.body.emitter.emit(\"_change\",{queue:true})}};LineGraph.prototype.hide=function(){if(this.dom.frame.parentNode){this.dom.frame.parentNode.removeChild(this.dom.frame)}};LineGraph.prototype.show=function(){if(!this.dom.frame.parentNode){this.body.dom.center.appendChild(this.dom.frame)}};LineGraph.prototype.setItems=function(items){var me=this,ids,oldItemsData=this.itemsData;if(!items){this.itemsData=null}else if(items instanceof DataSet||items instanceof DataView){this.itemsData=items}else{throw new TypeError(\"Data must be an instance of DataSet or DataView\")}if(oldItemsData){util.forEach(this.itemListeners,function(callback,event){oldItemsData.off(event,callback)});ids=oldItemsData.getIds();this._onRemove(ids)}if(this.itemsData){var id=this.id;util.forEach(this.itemListeners,function(callback,event){me.itemsData.on(event,callback,id)});ids=this.itemsData.getIds();this._onAdd(ids)}};LineGraph.prototype.setGroups=function(groups){var me=this;var ids;if(this.groupsData){util.forEach(this.groupListeners,function(callback,event){me.groupsData.off(event,callback)});ids=this.groupsData.getIds();this.groupsData=null;for(var i=0;i<ids.length;i++){this._removeGroup(ids[i])}}if(!groups){this.groupsData=null}else if(groups instanceof DataSet||groups instanceof DataView){this.groupsData=groups}else{throw new TypeError(\"Data must be an instance of DataSet or DataView\")}if(this.groupsData){var id=this.id;util.forEach(this.groupListeners,function(callback,event){me.groupsData.on(event,callback,id)});ids=this.groupsData.getIds();this._onAddGroups(ids)}};LineGraph.prototype._onUpdate=function(ids){this._updateAllGroupData(ids)};LineGraph.prototype._onAdd=function(ids){this._onUpdate(ids)};LineGraph.prototype._onRemove=function(ids){this._onUpdate(ids)};LineGraph.prototype._onUpdateGroups=function(groupIds){this._updateAllGroupData(null,groupIds)};LineGraph.prototype._onAddGroups=function(groupIds){this._onUpdateGroups(groupIds)};LineGraph.prototype._onRemoveGroups=function(groupIds){for(var i=0;i<groupIds.length;i++){this._removeGroup(groupIds[i])}this.forceGraphUpdate=true;this.body.emitter.emit(\"_change\",{queue:true})};LineGraph.prototype._removeGroup=function(groupId){if(this.groups.hasOwnProperty(groupId)){if(this.groups[groupId].options.yAxisOrientation==\"right\"){this.yAxisRight.removeGroup(groupId);this.legendRight.removeGroup(groupId);this.legendRight.redraw()}else{this.yAxisLeft.removeGroup(groupId);this.legendLeft.removeGroup(groupId);this.legendLeft.redraw()}delete this.groups[groupId]}};LineGraph.prototype._updateGroup=function(group,groupId){if(!this.groups.hasOwnProperty(groupId)){this.groups[groupId]=new GraphGroup(group,groupId,this.options,this.groupsUsingDefaultStyles);if(this.groups[groupId].options.yAxisOrientation==\"right\"){this.yAxisRight.addGroup(groupId,this.groups[groupId]);this.legendRight.addGroup(groupId,this.groups[groupId])}else{this.yAxisLeft.addGroup(groupId,this.groups[groupId]);this.legendLeft.addGroup(groupId,this.groups[groupId])}}else{this.groups[groupId].update(group);if(this.groups[groupId].options.yAxisOrientation==\"right\"){this.yAxisRight.updateGroup(groupId,this.groups[groupId]);this.legendRight.updateGroup(groupId,this.groups[groupId]);this.yAxisLeft.removeGroup(groupId);this.legendLeft.removeGroup(groupId)}else{this.yAxisLeft.updateGroup(groupId,this.groups[groupId]);this.legendLeft.updateGroup(groupId,this.groups[groupId]);this.yAxisRight.removeGroup(groupId);this.legendRight.removeGroup(groupId)}}this.legendLeft.redraw();this.legendRight.redraw()};LineGraph.prototype._updateAllGroupData=function(ids,groupIds){if(this.itemsData!=null){var groupsContent={};var items=this.itemsData.get();var fieldId=this.itemsData._fieldId;var idMap={};if(ids){ids.map(function(id){idMap[id]=id})}var groupCounts={};for(var i=0;i<items.length;i++){var item=items[i];var groupId=item.group;if(groupId===null||groupId===undefined){groupId=UNGROUPED}groupCounts.hasOwnProperty(groupId)?groupCounts[groupId]++:groupCounts[groupId]=1}var existingItemsMap={};if(!groupIds&&ids){for(groupId in this.groups){if(this.groups.hasOwnProperty(groupId)){group=this.groups[groupId];var existing_items=group.getItems();groupsContent[groupId]=existing_items.filter(function(item){existingItemsMap[item[fieldId]]=item[fieldId];return item[fieldId]!==idMap[item[fieldId]]});var newLength=groupCounts[groupId];groupCounts[groupId]-=groupsContent[groupId].length;if(groupsContent[groupId].length<newLength){groupsContent[groupId][newLength-1]={}}}}}for(i=0;i<items.length;i++){item=items[i];groupId=item.group;if(groupId===null||groupId===undefined){groupId=UNGROUPED}if(!groupIds&&ids&&item[fieldId]!==idMap[item[fieldId]]&&existingItemsMap.hasOwnProperty(item[fieldId])){continue}if(!groupsContent.hasOwnProperty(groupId)){groupsContent[groupId]=new Array(groupCounts[groupId])}var extended=util.bridgeObject(item);extended.x=util.convert(item.x,\"Date\");extended.end=util.convert(item.end,\"Date\");extended.orginalY=item.y;extended.y=Number(item.y);extended[fieldId]=item[fieldId];var index=groupsContent[groupId].length-groupCounts[groupId]--;groupsContent[groupId][index]=extended}for(groupId in this.groups){if(this.groups.hasOwnProperty(groupId)){if(!groupsContent.hasOwnProperty(groupId)){groupsContent[groupId]=new Array(0)}}}for(groupId in groupsContent){if(groupsContent.hasOwnProperty(groupId)){if(groupsContent[groupId].length==0){if(this.groups.hasOwnProperty(groupId)){this._removeGroup(groupId)}}else{var group=undefined;if(this.groupsData!=undefined){group=this.groupsData.get(groupId)}if(group==undefined){group={id:groupId,content:this.options.defaultGroup+groupId}}this._updateGroup(group,groupId);this.groups[groupId].setItems(groupsContent[groupId])}}}this.forceGraphUpdate=true;this.body.emitter.emit(\"_change\",{queue:true})}};LineGraph.prototype.redraw=function(){var resized=false;this.props.width=this.dom.frame.offsetWidth;this.props.height=this.body.domProps.centerContainer.height-this.body.domProps.border.top-this.body.domProps.border.bottom;resized=this._isResized()||resized;var visibleInterval=this.body.range.end-this.body.range.start;var zoomed=visibleInterval!=this.lastVisibleInterval;this.lastVisibleInterval=visibleInterval;if(resized==true){this.svg.style.width=util.option.asSize(3*this.props.width);this.svg.style.left=util.option.asSize(-this.props.width);if((this.options.height+\"\").indexOf(\"%\")!=-1||this.updateSVGheightOnResize==true){this.updateSVGheight=true}}if(this.updateSVGheight==true){if(this.options.graphHeight!=this.props.height+\"px\"){this.options.graphHeight=this.props.height+\"px\";this.svg.style.height=this.props.height+\"px\"}this.updateSVGheight=false}else{this.svg.style.height=(\"\"+this.options.graphHeight).replace(\"px\",\"\")+\"px\"}if(resized==true||zoomed==true||this.abortedGraphUpdate==true||this.forceGraphUpdate==true){resized=this._updateGraph()||resized;this.forceGraphUpdate=false}else{if(this.lastStart!=0){var offset=this.body.range.start-this.lastStart;var range=this.body.range.end-this.body.range.start;if(this.props.width!=0){var rangePerPixelInv=this.props.width/range;var xOffset=offset*rangePerPixelInv;this.svg.style.left=-this.props.width-xOffset+\"px\"}}}this.legendLeft.redraw();this.legendRight.redraw();return resized};LineGraph.prototype._getSortedGroupIds=function(){var grouplist=[];for(var groupId in this.groups){if(this.groups.hasOwnProperty(groupId)){var group=this.groups[groupId];if(group.visible==true&&(this.options.groups.visibility[groupId]===undefined||this.options.groups.visibility[groupId]==true)){grouplist.push({id:groupId,zIndex:group.options.zIndex})}}}util.insertSort(grouplist,function(a,b){var az=a.zIndex;var bz=b.zIndex;if(az===undefined)az=0;if(bz===undefined)bz=0;return az==bz?0:az<bz?-1:1});var groupIds=new Array(grouplist.length);for(var i=0;i<grouplist.length;i++){groupIds[i]=grouplist[i].id}return groupIds};LineGraph.prototype._updateGraph=function(){DOMutil.prepareElements(this.svgElements);if(this.props.width!=0&&this.itemsData!=null){var group,i;var groupRanges={};var changeCalled=false;var minDate=this.body.util.toGlobalTime(-this.body.domProps.root.width);var maxDate=this.body.util.toGlobalTime(2*this.body.domProps.root.width);var groupIds=this._getSortedGroupIds();if(groupIds.length>0){var groupsData={};this._getRelevantData(groupIds,groupsData,minDate,maxDate);this._applySampling(groupIds,groupsData);for(i=0;i<groupIds.length;i++){this._convertXcoordinates(groupsData[groupIds[i]])}this._getYRanges(groupIds,groupsData,groupRanges);changeCalled=this._updateYAxis(groupIds,groupRanges);if(changeCalled==true){DOMutil.cleanupElements(this.svgElements);this.abortedGraphUpdate=true;return true}this.abortedGraphUpdate=false;var below=undefined;for(i=0;i<groupIds.length;i++){group=this.groups[groupIds[i]];if(this.options.stack===true&&this.options.style===\"line\"){if(group.options.excludeFromStacking==undefined||!group.options.excludeFromStacking){if(below!=undefined){this._stack(groupsData[group.id],groupsData[below.id]);if(group.options.shaded.enabled==true&&group.options.shaded.orientation!==\"group\"){if(group.options.shaded.orientation==\"top\"&&below.options.shaded.orientation!==\"group\"){below.options.shaded.orientation=\"group\";below.options.shaded.groupId=group.id}else{group.options.shaded.orientation=\"group\";group.options.shaded.groupId=below.id}}}below=group}}this._convertYcoordinates(groupsData[groupIds[i]],group)}var paths={};for(i=0;i<groupIds.length;i++){group=this.groups[groupIds[i]];if(group.options.style===\"line\"&&group.options.shaded.enabled==true){var dataset=groupsData[groupIds[i]];if(dataset==null||dataset.length==0){continue}if(!paths.hasOwnProperty(groupIds[i])){paths[groupIds[i]]=Lines.calcPath(dataset,group)}if(group.options.shaded.orientation===\"group\"){var subGroupId=group.options.shaded.groupId;if(groupIds.indexOf(subGroupId)===-1){console.log(group.id+\": Unknown shading group target given:\"+subGroupId);continue}if(!paths.hasOwnProperty(subGroupId)){paths[subGroupId]=Lines.calcPath(groupsData[subGroupId],this.groups[subGroupId])}Lines.drawShading(paths[groupIds[i]],group,paths[subGroupId],this.framework)}else{Lines.drawShading(paths[groupIds[i]],group,undefined,this.framework)}}}Bars.draw(groupIds,groupsData,this.framework);for(i=0;i<groupIds.length;i++){group=this.groups[groupIds[i]];if(groupsData[groupIds[i]].length>0){switch(group.options.style){case\"line\":if(!paths.hasOwnProperty(groupIds[i])){paths[groupIds[i]]=Lines.calcPath(groupsData[groupIds[i]],group)}Lines.draw(paths[groupIds[i]],group,this.framework);case\"point\":case\"points\":if(group.options.style==\"point\"||group.options.style==\"points\"||group.options.drawPoints.enabled==true){Points.draw(groupsData[groupIds[i]],group,this.framework)}break;case\"bar\":default:}}}}}DOMutil.cleanupElements(this.svgElements);return false};LineGraph.prototype._stack=function(data,subData){var index,dx,dy,subPrevPoint,subNextPoint;index=0;for(var j=0;j<data.length;j++){subPrevPoint=undefined;subNextPoint=undefined;for(var k=index;k<subData.length;k++){if(subData[k].x===data[j].x){subPrevPoint=subData[k];subNextPoint=subData[k];index=k;break}else if(subData[k].x>data[j].x){subNextPoint=subData[k];if(k==0){subPrevPoint=subNextPoint}else{subPrevPoint=subData[k-1]}index=k;break}}if(subNextPoint===undefined){subPrevPoint=subData[subData.length-1];subNextPoint=subData[subData.length-1]}dx=subNextPoint.x-subPrevPoint.x;dy=subNextPoint.y-subPrevPoint.y;if(dx==0){data[j].y=data[j].orginalY+subNextPoint.y}else{data[j].y=data[j].orginalY+dy/dx*(data[j].x-subPrevPoint.x)+subPrevPoint.y}}};LineGraph.prototype._getRelevantData=function(groupIds,groupsData,minDate,maxDate){var group,i,j,item;if(groupIds.length>0){for(i=0;i<groupIds.length;i++){group=this.groups[groupIds[i]];var itemsData=group.getItems();if(group.options.sort==true){var dateComparator=function dateComparator(a,b){return a.getTime()==b.getTime()?0:a<b?-1:1};var first=Math.max(0,util.binarySearchValue(itemsData,minDate,\"x\",\"before\",dateComparator));var last=Math.min(itemsData.length,util.binarySearchValue(itemsData,maxDate,\"x\",\"after\",dateComparator)+1);if(last<=0){last=itemsData.length}var dataContainer=new Array(last-first);for(j=first;j<last;j++){item=group.itemsData[j];dataContainer[j-first]=item}groupsData[groupIds[i]]=dataContainer}else{groupsData[groupIds[i]]=group.itemsData}}}};LineGraph.prototype._applySampling=function(groupIds,groupsData){var group;if(groupIds.length>0){for(var i=0;i<groupIds.length;i++){group=this.groups[groupIds[i]];if(group.options.sampling==true){var dataContainer=groupsData[groupIds[i]];if(dataContainer.length>0){var increment=1;var amountOfPoints=dataContainer.length;var xDistance=this.body.util.toGlobalScreen(dataContainer[dataContainer.length-1].x)-this.body.util.toGlobalScreen(dataContainer[0].x);var pointsPerPixel=amountOfPoints/xDistance;increment=Math.min(Math.ceil(.2*amountOfPoints),Math.max(1,Math.round(pointsPerPixel)));var sampledData=new Array(amountOfPoints);for(var j=0;j<amountOfPoints;j+=increment){var idx=Math.round(j/increment);sampledData[idx]=dataContainer[j]}groupsData[groupIds[i]]=sampledData.splice(0,Math.round(amountOfPoints/increment))}}}}};LineGraph.prototype._getYRanges=function(groupIds,groupsData,groupRanges){var groupData,group,i;var combinedDataLeft=[];var combinedDataRight=[];var options;if(groupIds.length>0){for(i=0;i<groupIds.length;i++){groupData=groupsData[groupIds[i]];options=this.groups[groupIds[i]].options;if(groupData.length>0){group=this.groups[groupIds[i]];if(options.stack===true&&options.style===\"bar\"){if(options.yAxisOrientation===\"left\"){combinedDataLeft=combinedDataLeft.concat(groupData)}else{combinedDataRight=combinedDataRight.concat(groupData)}}else{groupRanges[groupIds[i]]=group.getYRange(groupData,groupIds[i])}}}Bars.getStackedYRange(combinedDataLeft,groupRanges,groupIds,\"__barStackLeft\",\"left\");Bars.getStackedYRange(combinedDataRight,groupRanges,groupIds,\"__barStackRight\",\"right\")}};LineGraph.prototype._updateYAxis=function(groupIds,groupRanges){var resized=false;var yAxisLeftUsed=false;var yAxisRightUsed=false;var minLeft=1e9,minRight=1e9,maxLeft=-1e9,maxRight=-1e9,minVal,maxVal;if(groupIds.length>0){for(var i=0;i<groupIds.length;i++){var group=this.groups[groupIds[i]];if(group&&group.options.yAxisOrientation!=\"right\"){yAxisLeftUsed=true;minLeft=1e9;maxLeft=-1e9}else if(group&&group.options.yAxisOrientation){yAxisRightUsed=true;minRight=1e9;maxRight=-1e9}}for(i=0;i<groupIds.length;i++){if(groupRanges.hasOwnProperty(groupIds[i])){if(groupRanges[groupIds[i]].ignore!==true){minVal=groupRanges[groupIds[i]].min;maxVal=groupRanges[groupIds[i]].max;if(groupRanges[groupIds[i]].yAxisOrientation!=\"right\"){yAxisLeftUsed=true;minLeft=minLeft>minVal?minVal:minLeft;maxLeft=maxLeft<maxVal?maxVal:maxLeft}else{yAxisRightUsed=true;minRight=minRight>minVal?minVal:minRight;maxRight=maxRight<maxVal?maxVal:maxRight}}}}if(yAxisLeftUsed==true){this.yAxisLeft.setRange(minLeft,maxLeft)}if(yAxisRightUsed==true){this.yAxisRight.setRange(minRight,maxRight)}}resized=this._toggleAxisVisiblity(yAxisLeftUsed,this.yAxisLeft)||resized;resized=this._toggleAxisVisiblity(yAxisRightUsed,this.yAxisRight)||resized;if(yAxisRightUsed==true&&yAxisLeftUsed==true){this.yAxisLeft.drawIcons=true;this.yAxisRight.drawIcons=true}else{this.yAxisLeft.drawIcons=false;this.yAxisRight.drawIcons=false}this.yAxisRight.master=!yAxisLeftUsed;this.yAxisRight.masterAxis=this.yAxisLeft;if(this.yAxisRight.master==false){if(yAxisRightUsed==true){this.yAxisLeft.lineOffset=this.yAxisRight.width}else{this.yAxisLeft.lineOffset=0}resized=this.yAxisLeft.redraw()||resized;resized=this.yAxisRight.redraw()||resized}else{resized=this.yAxisRight.redraw()||resized}var tempGroups=[\"__barStackLeft\",\"__barStackRight\",\"__lineStackLeft\",\"__lineStackRight\"];for(i=0;i<tempGroups.length;i++){if(groupIds.indexOf(tempGroups[i])!=-1){groupIds.splice(groupIds.indexOf(tempGroups[i]),1)}}return resized};LineGraph.prototype._toggleAxisVisiblity=function(axisUsed,axis){var changed=false;if(axisUsed==false){if(axis.dom.frame.parentNode&&axis.hidden==false){axis.hide();changed=true}}else{if(!axis.dom.frame.parentNode&&axis.hidden==true){axis.show();changed=true}}return changed};LineGraph.prototype._convertXcoordinates=function(datapoints){var toScreen=this.body.util.toScreen;for(var i=0;i<datapoints.length;i++){datapoints[i].screen_x=toScreen(datapoints[i].x)+this.props.width;datapoints[i].screen_y=datapoints[i].y;if(datapoints[i].end!=undefined){datapoints[i].screen_end=toScreen(datapoints[i].end)+this.props.width}else{datapoints[i].screen_end=undefined}}};LineGraph.prototype._convertYcoordinates=function(datapoints,group){var axis=this.yAxisLeft;var svgHeight=Number(this.svg.style.height.replace(\"px\",\"\"));if(group.options.yAxisOrientation==\"right\"){axis=this.yAxisRight}for(var i=0;i<datapoints.length;i++){datapoints[i].screen_y=Math.round(axis.convertValue(datapoints[i].y))}group.setZeroPosition(Math.min(svgHeight,axis.convertValue(0)))};module.exports=LineGraph},function(module,exports,__webpack_require__){\"use strict\";var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DOMutil=__webpack_require__(14);var Component=__webpack_require__(16);var DataScale=__webpack_require__(108);function DataAxis(body,options,svg,linegraphOptions){this.id=util.randomUUID();this.body=body;this.defaultOptions={orientation:\"left\",showMinorLabels:true,showMajorLabels:true,icons:false,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:\"40px\",visible:true,alignZeros:true,left:{range:{min:undefined,max:undefined},format:function format(value){return\"\"+parseFloat(value.toPrecision(3))},title:{text:undefined,style:undefined}},right:{range:{min:undefined,max:undefined},format:function format(value){return\"\"+parseFloat(value.toPrecision(3))},title:{text:undefined,style:undefined}}};this.linegraphOptions=linegraphOptions;this.linegraphSVG=svg;this.props={};this.DOMelements={lines:{},labels:{},title:{}};this.dom={};this.scale=undefined;this.range={start:0,end:0};this.options=util.extend({},this.defaultOptions);this.conversionFactor=1;this.setOptions(options);this.width=Number((\"\"+this.options.width).replace(\"px\",\"\"));this.minWidth=this.width;this.height=this.linegraphSVG.getBoundingClientRect().height;this.hidden=false;this.stepPixels=25;this.zeroCrossing=-1;this.amountOfSteps=-1;this.lineOffset=0;this.master=true;this.masterAxis=null;this.svgElements={};this.iconsRemoved=false;this.groups={};this.amountOfGroups=0;this._create();this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups};var me=this;this.body.emitter.on(\"verticalDrag\",function(){me.dom.lineContainer.style.top=me.body.domProps.scrollTop+\"px\"})}DataAxis.prototype=new Component;DataAxis.prototype.addGroup=function(label,graphOptions){if(!this.groups.hasOwnProperty(label)){this.groups[label]=graphOptions}this.amountOfGroups+=1};DataAxis.prototype.updateGroup=function(label,graphOptions){if(!this.groups.hasOwnProperty(label)){this.amountOfGroups+=1}this.groups[label]=graphOptions};DataAxis.prototype.removeGroup=function(label){if(this.groups.hasOwnProperty(label)){delete this.groups[label];this.amountOfGroups-=1}};DataAxis.prototype.setOptions=function(options){if(options){var redraw=false;if(this.options.orientation!=options.orientation&&options.orientation!==undefined){redraw=true}var fields=[\"orientation\",\"showMinorLabels\",\"showMajorLabels\",\"icons\",\"majorLinesOffset\",\"minorLinesOffset\",\"labelOffsetX\",\"labelOffsetY\",\"iconWidth\",\"width\",\"visible\",\"left\",\"right\",\"alignZeros\"];util.selectiveDeepExtend(fields,this.options,options);this.minWidth=Number((\"\"+this.options.width).replace(\"px\",\"\"));if(redraw===true&&this.dom.frame){this.hide();this.show()}}};DataAxis.prototype._create=function(){this.dom.frame=document.createElement(\"div\");this.dom.frame.style.width=this.options.width;this.dom.frame.style.height=this.height;this.dom.lineContainer=document.createElement(\"div\");this.dom.lineContainer.style.width=\"100%\";this.dom.lineContainer.style.height=this.height;this.dom.lineContainer.style.position=\"relative\";this.svg=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");this.svg.style.position=\"absolute\";this.svg.style.top=\"0px\";this.svg.style.height=\"100%\";this.svg.style.width=\"100%\";this.svg.style.display=\"block\";this.dom.frame.appendChild(this.svg)};DataAxis.prototype._redrawGroupIcons=function(){DOMutil.prepareElements(this.svgElements);var x;var iconWidth=this.options.iconWidth;var iconHeight=15;var iconOffset=4;var y=iconOffset+.5*iconHeight;if(this.options.orientation===\"left\"){x=iconOffset}else{x=this.width-iconWidth-iconOffset}var groupArray=(0,_keys2[\"default\"])(this.groups);groupArray.sort(function(a,b){return a<b?-1:1});for(var i=0;i<groupArray.length;i++){var groupId=groupArray[i];if(this.groups[groupId].visible===true&&(this.linegraphOptions.visibility[groupId]===undefined||this.linegraphOptions.visibility[groupId]===true)){this.groups[groupId].getLegend(iconWidth,iconHeight,this.framework,x,y);y+=iconHeight+iconOffset}}DOMutil.cleanupElements(this.svgElements);this.iconsRemoved=false};DataAxis.prototype._cleanupIcons=function(){if(this.iconsRemoved===false){DOMutil.prepareElements(this.svgElements);DOMutil.cleanupElements(this.svgElements);this.iconsRemoved=true}};DataAxis.prototype.show=function(){this.hidden=false;if(!this.dom.frame.parentNode){if(this.options.orientation===\"left\"){this.body.dom.left.appendChild(this.dom.frame)}else{this.body.dom.right.appendChild(this.dom.frame)}}if(!this.dom.lineContainer.parentNode){this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)}};DataAxis.prototype.hide=function(){this.hidden=true;if(this.dom.frame.parentNode){this.dom.frame.parentNode.removeChild(this.dom.frame)}if(this.dom.lineContainer.parentNode){this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)}};DataAxis.prototype.setRange=function(start,end){this.range.start=start;this.range.end=end};DataAxis.prototype.redraw=function(){var resized=false;var activeGroups=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+\"px\";for(var groupId in this.groups){if(this.groups.hasOwnProperty(groupId)){if(this.groups[groupId].visible===true&&(this.linegraphOptions.visibility[groupId]===undefined||this.linegraphOptions.visibility[groupId]===true)){activeGroups++}}}if(this.amountOfGroups===0||activeGroups===0){this.hide()}else{this.show();this.height=Number(this.linegraphSVG.style.height.replace(\"px\",\"\"));this.dom.lineContainer.style.height=this.height+\"px\";this.width=this.options.visible===true?Number((\"\"+this.options.width).replace(\"px\",\"\")):0;var props=this.props;var frame=this.dom.frame;frame.className=\"vis-data-axis\";this._calculateCharSize();var orientation=this.options.orientation;var showMinorLabels=this.options.showMinorLabels;var showMajorLabels=this.options.showMajorLabels;props.minorLabelHeight=showMinorLabels?props.minorCharHeight:0;props.majorLabelHeight=showMajorLabels?props.majorCharHeight:0;props.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset;props.minorLineHeight=1;props.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset;props.majorLineHeight=1;if(orientation===\"left\"){frame.style.top=\"0\";frame.style.left=\"0\";frame.style.bottom=\"\";frame.style.width=this.width+\"px\";frame.style.height=this.height+\"px\";this.props.width=this.body.domProps.left.width;this.props.height=this.body.domProps.left.height}else{frame.style.top=\"\";frame.style.bottom=\"0\";frame.style.left=\"0\";frame.style.width=this.width+\"px\";frame.style.height=this.height+\"px\";this.props.width=this.body.domProps.right.width;this.props.height=this.body.domProps.right.height}resized=this._redrawLabels();resized=this._isResized()||resized;if(this.options.icons===true){this._redrawGroupIcons()}else{this._cleanupIcons()}this._redrawTitle(orientation)}return resized};DataAxis.prototype._redrawLabels=function(){var _this=this;var resized=false;DOMutil.prepareElements(this.DOMelements.lines);DOMutil.prepareElements(this.DOMelements.labels);var orientation=this.options[\"orientation\"];var customRange=this.options[orientation].range!=undefined?this.options[orientation].range:{};var autoScaleEnd=true;if(customRange.max!=undefined){this.range.end=customRange.max;autoScaleEnd=false}var autoScaleStart=true;if(customRange.min!=undefined){this.range.start=customRange.min;autoScaleStart=false}this.scale=new DataScale(this.range.start,this.range.end,autoScaleStart,autoScaleEnd,this.dom.frame.offsetHeight,this.props.majorCharHeight,this.options.alignZeros,this.options[orientation].format);if(this.master===false&&this.masterAxis!=undefined){this.scale.followScale(this.masterAxis.scale)}this.maxLabelSize=0;var lines=this.scale.getLines();lines.forEach(function(line){var y=line.y;var isMajor=line.major;if(_this.options[\"showMinorLabels\"]&&isMajor===false){_this._redrawLabel(y-2,line.val,orientation,\"vis-y-axis vis-minor\",_this.props.minorCharHeight)}if(isMajor){if(y>=0){_this._redrawLabel(y-2,line.val,orientation,\"vis-y-axis vis-major\",_this.props.majorCharHeight)}}if(_this.master===true){if(isMajor){_this._redrawLine(y,orientation,\"vis-grid vis-horizontal vis-major\",_this.options.majorLinesOffset,_this.props.majorLineWidth)}else{_this._redrawLine(y,orientation,\"vis-grid vis-horizontal vis-minor\",_this.options.minorLinesOffset,_this.props.minorLineWidth)}}});var titleWidth=0;if(this.options[orientation].title!==undefined&&this.options[orientation].title.text!==undefined){titleWidth=this.props.titleCharHeight}var offset=this.options.icons===true?Math.max(this.options.iconWidth,titleWidth)+this.options.labelOffsetX+15:titleWidth+this.options.labelOffsetX+15;if(this.maxLabelSize>this.width-offset&&this.options.visible===true){this.width=this.maxLabelSize+offset;this.options.width=this.width+\"px\";DOMutil.cleanupElements(this.DOMelements.lines);DOMutil.cleanupElements(this.DOMelements.labels);this.redraw();resized=true}else if(this.maxLabelSize<this.width-offset&&this.options.visible===true&&this.width>this.minWidth){this.width=Math.max(this.minWidth,this.maxLabelSize+offset);this.options.width=this.width+\"px\";DOMutil.cleanupElements(this.DOMelements.lines);DOMutil.cleanupElements(this.DOMelements.labels);this.redraw();resized=true}else{DOMutil.cleanupElements(this.DOMelements.lines);DOMutil.cleanupElements(this.DOMelements.labels);resized=false}return resized};DataAxis.prototype.convertValue=function(value){return this.scale.convertValue(value)};DataAxis.prototype.screenToValue=function(x){return this.scale.screenToValue(x)};DataAxis.prototype._redrawLabel=function(y,text,orientation,className,characterHeight){var label=DOMutil.getDOMElement(\"div\",this.DOMelements.labels,this.dom.frame);label.className=className;label.innerHTML=text;if(orientation===\"left\"){label.style.left=\"-\"+this.options.labelOffsetX+\"px\";label.style.textAlign=\"right\"}else{label.style.right=\"-\"+this.options.labelOffsetX+\"px\";label.style.textAlign=\"left\"}label.style.top=y-.5*characterHeight+this.options.labelOffsetY+\"px\";text+=\"\";var largestWidth=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);if(this.maxLabelSize<text.length*largestWidth){this.maxLabelSize=text.length*largestWidth}};DataAxis.prototype._redrawLine=function(y,orientation,className,offset,width){if(this.master===true){\nvar line=DOMutil.getDOMElement(\"div\",this.DOMelements.lines,this.dom.lineContainer);line.className=className;line.innerHTML=\"\";if(orientation===\"left\"){line.style.left=this.width-offset+\"px\"}else{line.style.right=this.width-offset+\"px\"}line.style.width=width+\"px\";line.style.top=y+\"px\"}};DataAxis.prototype._redrawTitle=function(orientation){DOMutil.prepareElements(this.DOMelements.title);if(this.options[orientation].title!==undefined&&this.options[orientation].title.text!==undefined){var title=DOMutil.getDOMElement(\"div\",this.DOMelements.title,this.dom.frame);title.className=\"vis-y-axis vis-title vis-\"+orientation;title.innerHTML=this.options[orientation].title.text;if(this.options[orientation].title.style!==undefined){util.addCssText(title,this.options[orientation].title.style)}if(orientation===\"left\"){title.style.left=this.props.titleCharHeight+\"px\"}else{title.style.right=this.props.titleCharHeight+\"px\"}title.style.width=this.height+\"px\"}DOMutil.cleanupElements(this.DOMelements.title)};DataAxis.prototype._calculateCharSize=function(){if(!(\"minorCharHeight\"in this.props)){var textMinor=document.createTextNode(\"0\");var measureCharMinor=document.createElement(\"div\");measureCharMinor.className=\"vis-y-axis vis-minor vis-measure\";measureCharMinor.appendChild(textMinor);this.dom.frame.appendChild(measureCharMinor);this.props.minorCharHeight=measureCharMinor.clientHeight;this.props.minorCharWidth=measureCharMinor.clientWidth;this.dom.frame.removeChild(measureCharMinor)}if(!(\"majorCharHeight\"in this.props)){var textMajor=document.createTextNode(\"0\");var measureCharMajor=document.createElement(\"div\");measureCharMajor.className=\"vis-y-axis vis-major vis-measure\";measureCharMajor.appendChild(textMajor);this.dom.frame.appendChild(measureCharMajor);this.props.majorCharHeight=measureCharMajor.clientHeight;this.props.majorCharWidth=measureCharMajor.clientWidth;this.dom.frame.removeChild(measureCharMajor)}if(!(\"titleCharHeight\"in this.props)){var textTitle=document.createTextNode(\"0\");var measureCharTitle=document.createElement(\"div\");measureCharTitle.className=\"vis-y-axis vis-title vis-measure\";measureCharTitle.appendChild(textTitle);this.dom.frame.appendChild(measureCharTitle);this.props.titleCharHeight=measureCharTitle.clientHeight;this.props.titleCharWidth=measureCharTitle.clientWidth;this.dom.frame.removeChild(measureCharTitle)}};module.exports=DataAxis},function(module,exports,__webpack_require__){\"use strict\";function DataScale(start,end,autoScaleStart,autoScaleEnd,containerHeight,majorCharHeight){var zeroAlign=arguments.length>6&&arguments[6]!==undefined?arguments[6]:false;var formattingFunction=arguments.length>7&&arguments[7]!==undefined?arguments[7]:false;this.majorSteps=[1,2,5,10];this.minorSteps=[.25,.5,1,2];this.customLines=null;this.containerHeight=containerHeight;this.majorCharHeight=majorCharHeight;this._start=start;this._end=end;this.scale=1;this.minorStepIdx=-1;this.magnitudefactor=1;this.determineScale();this.zeroAlign=zeroAlign;this.autoScaleStart=autoScaleStart;this.autoScaleEnd=autoScaleEnd;this.formattingFunction=formattingFunction;if(autoScaleStart||autoScaleEnd){var me=this;var roundToMinor=function roundToMinor(value){var rounded=value-value%(me.magnitudefactor*me.minorSteps[me.minorStepIdx]);if(value%(me.magnitudefactor*me.minorSteps[me.minorStepIdx])>.5*(me.magnitudefactor*me.minorSteps[me.minorStepIdx])){return rounded+me.magnitudefactor*me.minorSteps[me.minorStepIdx]}else{return rounded}};if(autoScaleStart){this._start-=this.magnitudefactor*2*this.minorSteps[this.minorStepIdx];this._start=roundToMinor(this._start)}if(autoScaleEnd){this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx];this._end=roundToMinor(this._end)}this.determineScale()}}DataScale.prototype.setCharHeight=function(majorCharHeight){this.majorCharHeight=majorCharHeight};DataScale.prototype.setHeight=function(containerHeight){this.containerHeight=containerHeight};DataScale.prototype.determineScale=function(){var range=this._end-this._start;this.scale=this.containerHeight/range;var minimumStepValue=this.majorCharHeight/this.scale;var orderOfMagnitude=range>0?Math.round(Math.log(range)/Math.LN10):0;this.minorStepIdx=-1;this.magnitudefactor=Math.pow(10,orderOfMagnitude);var start=0;if(orderOfMagnitude<0){start=orderOfMagnitude}var solutionFound=false;for(var l=start;Math.abs(l)<=Math.abs(orderOfMagnitude);l++){this.magnitudefactor=Math.pow(10,l);for(var j=0;j<this.minorSteps.length;j++){var stepSize=this.magnitudefactor*this.minorSteps[j];if(stepSize>=minimumStepValue){solutionFound=true;this.minorStepIdx=j;break}}if(solutionFound===true){break}}};DataScale.prototype.is_major=function(value){return value%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])===0};DataScale.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]};DataScale.prototype.getFirstMajor=function(){var majorStep=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(majorStep-this._start%majorStep)%majorStep)};DataScale.prototype.formatValue=function(current){var returnValue=current.toPrecision(5);if(typeof this.formattingFunction===\"function\"){returnValue=this.formattingFunction(current)}if(typeof returnValue===\"number\"){return\"\"+returnValue}else if(typeof returnValue===\"string\"){return returnValue}else{return current.toPrecision(5)}};DataScale.prototype.getLines=function(){var lines=[];var step=this.getStep();var bottomOffset=(step-this._start%step)%step;for(var i=this._start+bottomOffset;this._end-i>1e-5;i+=step){if(i!=this._start){lines.push({major:this.is_major(i),y:this.convertValue(i),val:this.formatValue(i)})}}return lines};DataScale.prototype.followScale=function(other){var oldStepIdx=this.minorStepIdx;var oldStart=this._start;var oldEnd=this._end;var me=this;var increaseMagnitude=function increaseMagnitude(){me.magnitudefactor*=2};var decreaseMagnitude=function decreaseMagnitude(){me.magnitudefactor/=2};if(other.minorStepIdx<=1&&this.minorStepIdx<=1||other.minorStepIdx>1&&this.minorStepIdx>1){}else if(other.minorStepIdx<this.minorStepIdx){this.minorStepIdx=1;if(oldStepIdx==2){increaseMagnitude()}else{increaseMagnitude();increaseMagnitude()}}else{this.minorStepIdx=2;if(oldStepIdx==1){decreaseMagnitude()}else{decreaseMagnitude();decreaseMagnitude()}}var otherZero=other.convertValue(0);var otherStep=other.getStep()*other.scale;var done=false;var count=0;while(!done&&count++<5){this.scale=otherStep/(this.minorSteps[this.minorStepIdx]*this.magnitudefactor);var newRange=this.containerHeight/this.scale;this._start=oldStart;this._end=this._start+newRange;var myOriginalZero=this._end*this.scale;var majorStep=this.magnitudefactor*this.majorSteps[this.minorStepIdx];var majorOffset=this.getFirstMajor()-other.getFirstMajor();if(this.zeroAlign){var zeroOffset=otherZero-myOriginalZero;this._end+=zeroOffset/this.scale;this._start=this._end-newRange}else{if(!this.autoScaleStart){this._start+=majorStep-majorOffset/this.scale;this._end=this._start+newRange}else{this._start-=majorOffset/this.scale;this._end=this._start+newRange}}if(!this.autoScaleEnd&&this._end>oldEnd+1e-5){decreaseMagnitude();done=false;continue}if(!this.autoScaleStart&&this._start<oldStart-1e-5){if(this.zeroAlign&&oldStart>=0){console.warn(\"Can't adhere to given 'min' range, due to zeroalign\")}else{decreaseMagnitude();done=false;continue}}if(this.autoScaleStart&&this.autoScaleEnd&&newRange<oldEnd-oldStart){increaseMagnitude();done=false;continue}done=true}};DataScale.prototype.convertValue=function(value){return this.containerHeight-(value-this._start)*this.scale};DataScale.prototype.screenToValue=function(pixels){return(this.containerHeight-pixels)/this.scale+this._start};module.exports=DataScale},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Bars=__webpack_require__(110);var Lines=__webpack_require__(111);var Points=__webpack_require__(72);function GraphGroup(group,groupId,options,groupsUsingDefaultStyles){this.id=groupId;var fields=[\"sampling\",\"style\",\"sort\",\"yAxisOrientation\",\"barChart\",\"drawPoints\",\"shaded\",\"interpolation\",\"zIndex\",\"excludeFromStacking\",\"excludeFromLegend\"];this.options=util.selectiveBridgeObject(fields,options);this.usingDefaultStyle=group.className===undefined;this.groupsUsingDefaultStyles=groupsUsingDefaultStyles;this.zeroPosition=0;this.update(group);if(this.usingDefaultStyle==true){this.groupsUsingDefaultStyles[0]+=1}this.itemsData=[];this.visible=group.visible===undefined?true:group.visible}GraphGroup.prototype.setItems=function(items){if(items!=null){this.itemsData=items;if(this.options.sort==true){util.insertSort(this.itemsData,function(a,b){return a.x>b.x?1:-1})}}else{this.itemsData=[]}};GraphGroup.prototype.getItems=function(){return this.itemsData};GraphGroup.prototype.setZeroPosition=function(pos){this.zeroPosition=pos};GraphGroup.prototype.setOptions=function(options){if(options!==undefined){var fields=[\"sampling\",\"style\",\"sort\",\"yAxisOrientation\",\"barChart\",\"zIndex\",\"excludeFromStacking\",\"excludeFromLegend\"];util.selectiveDeepExtend(fields,this.options,options);if(typeof options.drawPoints==\"function\"){options.drawPoints={onRender:options.drawPoints}}util.mergeOptions(this.options,options,\"interpolation\");util.mergeOptions(this.options,options,\"drawPoints\");util.mergeOptions(this.options,options,\"shaded\");if(options.interpolation){if((0,_typeof3[\"default\"])(options.interpolation)==\"object\"){if(options.interpolation.parametrization){if(options.interpolation.parametrization==\"uniform\"){this.options.interpolation.alpha=0}else if(options.interpolation.parametrization==\"chordal\"){this.options.interpolation.alpha=1}else{this.options.interpolation.parametrization=\"centripetal\";this.options.interpolation.alpha=.5}}}}}};GraphGroup.prototype.update=function(group){this.group=group;this.content=group.content||\"graph\";this.className=group.className||this.className||\"vis-graph-group\"+this.groupsUsingDefaultStyles[0]%10;this.visible=group.visible===undefined?true:group.visible;this.style=group.style;this.setOptions(group.options)};GraphGroup.prototype.getLegend=function(iconWidth,iconHeight,framework,x,y){if(framework==undefined||framework==null){var svg=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");framework={svg:svg,svgElements:{},options:this.options,groups:[this]}}if(x==undefined||x==null){x=0}if(y==undefined||y==null){y=.5*iconHeight}switch(this.options.style){case\"line\":Lines.drawIcon(this,x,y,iconWidth,iconHeight,framework);break;case\"points\":case\"point\":Points.drawIcon(this,x,y,iconWidth,iconHeight,framework);break;case\"bar\":Bars.drawIcon(this,x,y,iconWidth,iconHeight,framework);break}return{icon:framework.svg,label:this.content,orientation:this.options.yAxisOrientation}};GraphGroup.prototype.getYRange=function(groupData){var yMin=groupData[0].y;var yMax=groupData[0].y;for(var j=0;j<groupData.length;j++){yMin=yMin>groupData[j].y?groupData[j].y:yMin;yMax=yMax<groupData[j].y?groupData[j].y:yMax}return{min:yMin,max:yMax,yAxisOrientation:this.options.yAxisOrientation}};module.exports=GraphGroup},function(module,exports,__webpack_require__){\"use strict\";var DOMutil=__webpack_require__(14);var Points=__webpack_require__(72);function Bargraph(groupId,options){}Bargraph.drawIcon=function(group,x,y,iconWidth,iconHeight,framework){var fillHeight=iconHeight*.5;var outline=DOMutil.getSVGElement(\"rect\",framework.svgElements,framework.svg);outline.setAttributeNS(null,\"x\",x);outline.setAttributeNS(null,\"y\",y-fillHeight);outline.setAttributeNS(null,\"width\",iconWidth);outline.setAttributeNS(null,\"height\",2*fillHeight);outline.setAttributeNS(null,\"class\",\"vis-outline\");var barWidth=Math.round(.3*iconWidth);var originalWidth=group.options.barChart.width;var scale=originalWidth/barWidth;var bar1Height=Math.round(.4*iconHeight);var bar2Height=Math.round(.75*iconHeight);var offset=Math.round((iconWidth-2*barWidth)/3);DOMutil.drawBar(x+.5*barWidth+offset,y+fillHeight-bar1Height-1,barWidth,bar1Height,group.className+\" vis-bar\",framework.svgElements,framework.svg,group.style);DOMutil.drawBar(x+1.5*barWidth+offset+2,y+fillHeight-bar2Height-1,barWidth,bar2Height,group.className+\" vis-bar\",framework.svgElements,framework.svg,group.style);if(group.options.drawPoints.enabled==true){var groupTemplate={style:group.options.drawPoints.style,styles:group.options.drawPoints.styles,size:group.options.drawPoints.size/scale,className:group.className};DOMutil.drawPoint(x+.5*barWidth+offset,y+fillHeight-bar1Height-1,groupTemplate,framework.svgElements,framework.svg);DOMutil.drawPoint(x+1.5*barWidth+offset+2,y+fillHeight-bar2Height-1,groupTemplate,framework.svgElements,framework.svg)}};Bargraph.draw=function(groupIds,processedGroupData,framework){var combinedData=[];var intersections={};var coreDistance;var key,drawData;var group;var i,j;var barPoints=0;for(i=0;i<groupIds.length;i++){group=framework.groups[groupIds[i]];if(group.options.style===\"bar\"){if(group.visible===true&&(framework.options.groups.visibility[groupIds[i]]===undefined||framework.options.groups.visibility[groupIds[i]]===true)){for(j=0;j<processedGroupData[groupIds[i]].length;j++){combinedData.push({screen_x:processedGroupData[groupIds[i]][j].screen_x,screen_end:processedGroupData[groupIds[i]][j].screen_end,screen_y:processedGroupData[groupIds[i]][j].screen_y,x:processedGroupData[groupIds[i]][j].x,end:processedGroupData[groupIds[i]][j].end,y:processedGroupData[groupIds[i]][j].y,groupId:groupIds[i],label:processedGroupData[groupIds[i]][j].label});barPoints+=1}}}}if(barPoints===0){return}combinedData.sort(function(a,b){if(a.screen_x===b.screen_x){return a.groupId<b.groupId?-1:1}else{return a.screen_x-b.screen_x}});Bargraph._getDataIntersections(intersections,combinedData);for(i=0;i<combinedData.length;i++){group=framework.groups[combinedData[i].groupId];var minWidth=group.options.barChart.minWidth!=undefined?group.options.barChart.minWidth:.1*group.options.barChart.width;key=combinedData[i].screen_x;var heightOffset=0;if(intersections[key]===undefined){if(i+1<combinedData.length){coreDistance=Math.abs(combinedData[i+1].screen_x-key)}drawData=Bargraph._getSafeDrawData(coreDistance,group,minWidth)}else{var nextKey=i+(intersections[key].amount-intersections[key].resolved);if(nextKey<combinedData.length){coreDistance=Math.abs(combinedData[nextKey].screen_x-key)}drawData=Bargraph._getSafeDrawData(coreDistance,group,minWidth);intersections[key].resolved+=1;if(group.options.stack===true&&group.options.excludeFromStacking!==true){if(combinedData[i].screen_y<group.zeroPosition){heightOffset=intersections[key].accumulatedNegative;intersections[key].accumulatedNegative+=group.zeroPosition-combinedData[i].screen_y}else{heightOffset=intersections[key].accumulatedPositive;intersections[key].accumulatedPositive+=group.zeroPosition-combinedData[i].screen_y}}else if(group.options.barChart.sideBySide===true){drawData.width=drawData.width/intersections[key].amount;drawData.offset+=intersections[key].resolved*drawData.width-.5*drawData.width*(intersections[key].amount+1)}}var dataWidth=drawData.width;var start=combinedData[i].screen_x;if(combinedData[i].screen_end!=undefined){dataWidth=combinedData[i].screen_end-combinedData[i].screen_x;start+=dataWidth*.5}else{start+=drawData.offset}DOMutil.drawBar(start,combinedData[i].screen_y-heightOffset,dataWidth,group.zeroPosition-combinedData[i].screen_y,group.className+\" vis-bar\",framework.svgElements,framework.svg,group.style);if(group.options.drawPoints.enabled===true){var pointData={screen_x:combinedData[i].screen_x,screen_y:combinedData[i].screen_y-heightOffset,x:combinedData[i].x,y:combinedData[i].y,groupId:combinedData[i].groupId,label:combinedData[i].label};Points.draw([pointData],group,framework,drawData.offset)}}};Bargraph._getDataIntersections=function(intersections,combinedData){var coreDistance;for(var i=0;i<combinedData.length;i++){if(i+1<combinedData.length){coreDistance=Math.abs(combinedData[i+1].screen_x-combinedData[i].screen_x)}if(i>0){coreDistance=Math.min(coreDistance,Math.abs(combinedData[i-1].screen_x-combinedData[i].screen_x))}if(coreDistance===0){if(intersections[combinedData[i].screen_x]===undefined){intersections[combinedData[i].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}}intersections[combinedData[i].screen_x].amount+=1}}};Bargraph._getSafeDrawData=function(coreDistance,group,minWidth){var width,offset;if(coreDistance<group.options.barChart.width&&coreDistance>0){width=coreDistance<minWidth?minWidth:coreDistance;offset=0;if(group.options.barChart.align===\"left\"){offset-=.5*coreDistance}else if(group.options.barChart.align===\"right\"){offset+=.5*coreDistance}}else{width=group.options.barChart.width;offset=0;if(group.options.barChart.align===\"left\"){offset-=.5*group.options.barChart.width}else if(group.options.barChart.align===\"right\"){offset+=.5*group.options.barChart.width}}return{width:width,offset:offset}};Bargraph.getStackedYRange=function(combinedData,groupRanges,groupIds,groupLabel,orientation){if(combinedData.length>0){combinedData.sort(function(a,b){if(a.screen_x===b.screen_x){return a.groupId<b.groupId?-1:1}else{return a.screen_x-b.screen_x}});var intersections={};Bargraph._getDataIntersections(intersections,combinedData);groupRanges[groupLabel]=Bargraph._getStackedYRange(intersections,combinedData);groupRanges[groupLabel].yAxisOrientation=orientation;groupIds.push(groupLabel)}};Bargraph._getStackedYRange=function(intersections,combinedData){var key;var yMin=combinedData[0].screen_y;var yMax=combinedData[0].screen_y;for(var i=0;i<combinedData.length;i++){key=combinedData[i].screen_x;if(intersections[key]===undefined){yMin=yMin>combinedData[i].screen_y?combinedData[i].screen_y:yMin;yMax=yMax<combinedData[i].screen_y?combinedData[i].screen_y:yMax}else{if(combinedData[i].screen_y<0){intersections[key].accumulatedNegative+=combinedData[i].screen_y}else{intersections[key].accumulatedPositive+=combinedData[i].screen_y}}}for(var xpos in intersections){if(intersections.hasOwnProperty(xpos)){yMin=yMin>intersections[xpos].accumulatedNegative?intersections[xpos].accumulatedNegative:yMin;yMin=yMin>intersections[xpos].accumulatedPositive?intersections[xpos].accumulatedPositive:yMin;yMax=yMax<intersections[xpos].accumulatedNegative?intersections[xpos].accumulatedNegative:yMax;yMax=yMax<intersections[xpos].accumulatedPositive?intersections[xpos].accumulatedPositive:yMax}}return{min:yMin,max:yMax}};module.exports=Bargraph},function(module,exports,__webpack_require__){\"use strict\";var DOMutil=__webpack_require__(14);function Line(groupId,options){}Line.calcPath=function(dataset,group){if(dataset!=null){if(dataset.length>0){var d=[];if(group.options.interpolation.enabled==true){d=Line._catmullRom(dataset,group)}else{d=Line._linear(dataset)}return d}}};Line.drawIcon=function(group,x,y,iconWidth,iconHeight,framework){var fillHeight=iconHeight*.5;var path,fillPath;var outline=DOMutil.getSVGElement(\"rect\",framework.svgElements,framework.svg);outline.setAttributeNS(null,\"x\",x);outline.setAttributeNS(null,\"y\",y-fillHeight);outline.setAttributeNS(null,\"width\",iconWidth);outline.setAttributeNS(null,\"height\",2*fillHeight);outline.setAttributeNS(null,\"class\",\"vis-outline\");path=DOMutil.getSVGElement(\"path\",framework.svgElements,framework.svg);path.setAttributeNS(null,\"class\",group.className);if(group.style!==undefined){path.setAttributeNS(null,\"style\",group.style)}path.setAttributeNS(null,\"d\",\"M\"+x+\",\"+y+\" L\"+(x+iconWidth)+\",\"+y+\"\");if(group.options.shaded.enabled==true){fillPath=DOMutil.getSVGElement(\"path\",framework.svgElements,framework.svg);if(group.options.shaded.orientation==\"top\"){fillPath.setAttributeNS(null,\"d\",\"M\"+x+\", \"+(y-fillHeight)+\"L\"+x+\",\"+y+\" L\"+(x+iconWidth)+\",\"+y+\" L\"+(x+iconWidth)+\",\"+(y-fillHeight))}else{fillPath.setAttributeNS(null,\"d\",\"M\"+x+\",\"+y+\" \"+\"L\"+x+\",\"+(y+fillHeight)+\" \"+\"L\"+(x+iconWidth)+\",\"+(y+fillHeight)+\"L\"+(x+iconWidth)+\",\"+y)}fillPath.setAttributeNS(null,\"class\",group.className+\" vis-icon-fill\");if(group.options.shaded.style!==undefined&&group.options.shaded.style!==\"\"){fillPath.setAttributeNS(null,\"style\",group.options.shaded.style)}}if(group.options.drawPoints.enabled==true){var groupTemplate={style:group.options.drawPoints.style,styles:group.options.drawPoints.styles,size:group.options.drawPoints.size,className:group.className};DOMutil.drawPoint(x+.5*iconWidth,y,groupTemplate,framework.svgElements,framework.svg)}};Line.drawShading=function(pathArray,group,subPathArray,framework){if(group.options.shaded.enabled==true){var svgHeight=Number(framework.svg.style.height.replace(\"px\",\"\"));var fillPath=DOMutil.getSVGElement(\"path\",framework.svgElements,framework.svg);var type=\"L\";if(group.options.interpolation.enabled==true){type=\"C\"}var dFill;var zero=0;if(group.options.shaded.orientation==\"top\"){zero=0}else if(group.options.shaded.orientation==\"bottom\"){zero=svgHeight}else{zero=Math.min(Math.max(0,group.zeroPosition),svgHeight)}if(group.options.shaded.orientation==\"group\"&&subPathArray!=null&&subPathArray!=undefined){dFill=\"M\"+pathArray[0][0]+\",\"+pathArray[0][1]+\" \"+this.serializePath(pathArray,type,false)+\" L\"+subPathArray[subPathArray.length-1][0]+\",\"+subPathArray[subPathArray.length-1][1]+\" \"+this.serializePath(subPathArray,type,true)+subPathArray[0][0]+\",\"+subPathArray[0][1]+\" Z\"}else{dFill=\"M\"+pathArray[0][0]+\",\"+pathArray[0][1]+\" \"+this.serializePath(pathArray,type,false)+\" V\"+zero+\" H\"+pathArray[0][0]+\" Z\"}fillPath.setAttributeNS(null,\"class\",group.className+\" vis-fill\");if(group.options.shaded.style!==undefined){fillPath.setAttributeNS(null,\"style\",group.options.shaded.style)}fillPath.setAttributeNS(null,\"d\",dFill)}};Line.draw=function(pathArray,group,framework){if(pathArray!=null&&pathArray!=undefined){var path=DOMutil.getSVGElement(\"path\",framework.svgElements,framework.svg);path.setAttributeNS(null,\"class\",group.className);if(group.style!==undefined){path.setAttributeNS(null,\"style\",group.style)}var type=\"L\";if(group.options.interpolation.enabled==true){type=\"C\"}path.setAttributeNS(null,\"d\",\"M\"+pathArray[0][0]+\",\"+pathArray[0][1]+\" \"+this.serializePath(pathArray,type,false))}};Line.serializePath=function(pathArray,type,inverse){if(pathArray.length<2){return\"\"}var d=type;var i;if(inverse){for(i=pathArray.length-2;i>0;i--){d+=pathArray[i][0]+\",\"+pathArray[i][1]+\" \"}}else{for(i=1;i<pathArray.length;i++){d+=pathArray[i][0]+\",\"+pathArray[i][1]+\" \"}}return d};Line._catmullRomUniform=function(data){var p0,p1,p2,p3,bp1,bp2;var d=[];d.push([Math.round(data[0].screen_x),Math.round(data[0].screen_y)]);var normalization=1/6;var length=data.length;for(var i=0;i<length-1;i++){p0=i==0?data[0]:data[i-1];p1=data[i];p2=data[i+1];p3=i+2<length?data[i+2]:p2;bp1={screen_x:(-p0.screen_x+6*p1.screen_x+p2.screen_x)*normalization,screen_y:(-p0.screen_y+6*p1.screen_y+p2.screen_y)*normalization};bp2={screen_x:(p1.screen_x+6*p2.screen_x-p3.screen_x)*normalization,screen_y:(p1.screen_y+6*p2.screen_y-p3.screen_y)*normalization};d.push([bp1.screen_x,bp1.screen_y]);d.push([bp2.screen_x,bp2.screen_y]);d.push([p2.screen_x,p2.screen_y])}return d};Line._catmullRom=function(data,group){var alpha=group.options.interpolation.alpha;if(alpha==0||alpha===undefined){return this._catmullRomUniform(data)}else{var p0,p1,p2,p3,bp1,bp2,d1,d2,d3,A,B,N,M;var d3powA,d2powA,d3pow2A,d2pow2A,d1pow2A,d1powA;var d=[];d.push([Math.round(data[0].screen_x),Math.round(data[0].screen_y)]);var length=data.length;for(var i=0;i<length-1;i++){p0=i==0?data[0]:data[i-1];p1=data[i];p2=data[i+1];p3=i+2<length?data[i+2]:p2;d1=Math.sqrt(Math.pow(p0.screen_x-p1.screen_x,2)+Math.pow(p0.screen_y-p1.screen_y,2));d2=Math.sqrt(Math.pow(p1.screen_x-p2.screen_x,2)+Math.pow(p1.screen_y-p2.screen_y,2));d3=Math.sqrt(Math.pow(p2.screen_x-p3.screen_x,2)+Math.pow(p2.screen_y-p3.screen_y,2));d3powA=Math.pow(d3,alpha);d3pow2A=Math.pow(d3,2*alpha);d2powA=Math.pow(d2,alpha);d2pow2A=Math.pow(d2,2*alpha);d1powA=Math.pow(d1,alpha);d1pow2A=Math.pow(d1,2*alpha);A=2*d1pow2A+3*d1powA*d2powA+d2pow2A;B=2*d3pow2A+3*d3powA*d2powA+d2pow2A;N=3*d1powA*(d1powA+d2powA);if(N>0){N=1/N}M=3*d3powA*(d3powA+d2powA);if(M>0){M=1/M}bp1={screen_x:(-d2pow2A*p0.screen_x+A*p1.screen_x+d1pow2A*p2.screen_x)*N,screen_y:(-d2pow2A*p0.screen_y+A*p1.screen_y+d1pow2A*p2.screen_y)*N};bp2={screen_x:(d3pow2A*p1.screen_x+B*p2.screen_x-d2pow2A*p3.screen_x)*M,screen_y:(d3pow2A*p1.screen_y+B*p2.screen_y-d2pow2A*p3.screen_y)*M};if(bp1.screen_x==0&&bp1.screen_y==0){bp1=p1}if(bp2.screen_x==0&&bp2.screen_y==0){bp2=p2}d.push([bp1.screen_x,bp1.screen_y]);d.push([bp2.screen_x,bp2.screen_y]);d.push([p2.screen_x,p2.screen_y])}return d}};Line._linear=function(data){var d=[];for(var i=0;i<data.length;i++){d.push([data[i].screen_x,data[i].screen_y])}return d};module.exports=Line},function(module,exports,__webpack_require__){\"use strict\";var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DOMutil=__webpack_require__(14);var Component=__webpack_require__(16);function Legend(body,options,side,linegraphOptions){this.body=body;this.defaultOptions={enabled:false,icons:true,iconSize:20,iconSpacing:6,left:{visible:true,position:\"top-left\"},right:{visible:true,position:\"top-right\"}};this.side=side;this.options=util.extend({},this.defaultOptions);this.linegraphOptions=linegraphOptions;this.svgElements={};this.dom={};this.groups={};this.amountOfGroups=0;this._create();this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups};this.setOptions(options)}Legend.prototype=new Component;Legend.prototype.clear=function(){this.groups={};this.amountOfGroups=0};Legend.prototype.addGroup=function(label,graphOptions){if(graphOptions.options.excludeFromLegend!=true){if(!this.groups.hasOwnProperty(label)){this.groups[label]=graphOptions}this.amountOfGroups+=1}};Legend.prototype.updateGroup=function(label,graphOptions){this.groups[label]=graphOptions};Legend.prototype.removeGroup=function(label){if(this.groups.hasOwnProperty(label)){delete this.groups[label];this.amountOfGroups-=1}};Legend.prototype._create=function(){this.dom.frame=document.createElement(\"div\");this.dom.frame.className=\"vis-legend\";this.dom.frame.style.position=\"absolute\";this.dom.frame.style.top=\"10px\";this.dom.frame.style.display=\"block\";this.dom.textArea=document.createElement(\"div\");this.dom.textArea.className=\"vis-legend-text\";this.dom.textArea.style.position=\"relative\";this.dom.textArea.style.top=\"0px\";this.svg=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");this.svg.style.position=\"absolute\";this.svg.style.top=0+\"px\";this.svg.style.width=this.options.iconSize+5+\"px\";this.svg.style.height=\"100%\";this.dom.frame.appendChild(this.svg);this.dom.frame.appendChild(this.dom.textArea)};Legend.prototype.hide=function(){if(this.dom.frame.parentNode){this.dom.frame.parentNode.removeChild(this.dom.frame)}};Legend.prototype.show=function(){if(!this.dom.frame.parentNode){this.body.dom.center.appendChild(this.dom.frame)}};Legend.prototype.setOptions=function(options){var fields=[\"enabled\",\"orientation\",\"icons\",\"left\",\"right\"];util.selectiveDeepExtend(fields,this.options,options)};Legend.prototype.redraw=function(){var activeGroups=0;var groupArray=(0,_keys2[\"default\"])(this.groups);groupArray.sort(function(a,b){return a<b?-1:1});for(var i=0;i<groupArray.length;i++){var groupId=groupArray[i];if(this.groups[groupId].visible==true&&(this.linegraphOptions.visibility[groupId]===undefined||this.linegraphOptions.visibility[groupId]==true)){activeGroups++}}if(this.options[this.side].visible==false||this.amountOfGroups==0||this.options.enabled==false||activeGroups==0){this.hide()}else{this.show();if(this.options[this.side].position==\"top-left\"||this.options[this.side].position==\"bottom-left\"){this.dom.frame.style.left=\"4px\";this.dom.frame.style.textAlign=\"left\";this.dom.textArea.style.textAlign=\"left\";this.dom.textArea.style.left=this.options.iconSize+15+\"px\";this.dom.textArea.style.right=\"\";this.svg.style.left=0+\"px\";this.svg.style.right=\"\"}else{this.dom.frame.style.right=\"4px\";this.dom.frame.style.textAlign=\"right\";this.dom.textArea.style.textAlign=\"right\";this.dom.textArea.style.right=this.options.iconSize+15+\"px\";this.dom.textArea.style.left=\"\";this.svg.style.right=0+\"px\";this.svg.style.left=\"\"}if(this.options[this.side].position==\"top-left\"||this.options[this.side].position==\"top-right\"){this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace(\"px\",\"\"))+\"px\";this.dom.frame.style.bottom=\"\"}else{var scrollableHeight=this.body.domProps.center.height-this.body.domProps.centerContainer.height;this.dom.frame.style.bottom=4+scrollableHeight+Number(this.body.dom.center.style.top.replace(\"px\",\"\"))+\"px\";this.dom.frame.style.top=\"\"}if(this.options.icons==false){this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+\"px\";this.dom.textArea.style.right=\"\";this.dom.textArea.style.left=\"\";this.svg.style.width=\"0px\"}else{this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+\"px\";this.drawLegendIcons()}var content=\"\";for(i=0;i<groupArray.length;i++){groupId=groupArray[i];if(this.groups[groupId].visible==true&&(this.linegraphOptions.visibility[groupId]===undefined||this.linegraphOptions.visibility[groupId]==true)){content+=this.groups[groupId].content+\"<br />\"}}this.dom.textArea.innerHTML=content;this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+\"px\"}};Legend.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var groupArray=(0,_keys2[\"default\"])(this.groups);groupArray.sort(function(a,b){return a<b?-1:1});DOMutil.resetElements(this.svgElements);var padding=window.getComputedStyle(this.dom.frame).paddingTop;var iconOffset=Number(padding.replace(\"px\",\"\"));var x=iconOffset;var iconWidth=this.options.iconSize;var iconHeight=.75*this.options.iconSize;var y=iconOffset+.5*iconHeight+3;this.svg.style.width=iconWidth+5+iconOffset+\"px\";for(var i=0;i<groupArray.length;i++){var groupId=groupArray[i];if(this.groups[groupId].visible==true&&(this.linegraphOptions.visibility[groupId]===undefined||this.linegraphOptions.visibility[groupId]==true)){this.groups[groupId].getLegend(iconWidth,iconHeight,this.framework,x,y);y+=iconHeight+this.options.iconSpacing}}}};module.exports=Legend},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var string=\"string\";var bool=\"boolean\";var number=\"number\";var array=\"array\";var date=\"date\";var object=\"object\";var dom=\"dom\";var moment=\"moment\";var any=\"any\";var allOptions={configure:{enabled:{boolean:bool},filter:{boolean:bool,function:\"function\"},container:{dom:dom},__type__:{object:object,boolean:bool,function:\"function\"}},yAxisOrientation:{string:[\"left\",\"right\"]},defaultGroup:{string:string},sort:{boolean:bool},sampling:{boolean:bool},stack:{boolean:bool},graphHeight:{string:string,number:number},shaded:{enabled:{boolean:bool},orientation:{string:[\"bottom\",\"top\",\"zero\",\"group\"]},groupId:{object:object},__type__:{boolean:bool,object:object}},style:{string:[\"line\",\"bar\",\"points\"]},barChart:{width:{number:number},minWidth:{number:number},sideBySide:{boolean:bool},align:{string:[\"left\",\"center\",\"right\"]},__type__:{object:object}},interpolation:{enabled:{boolean:bool},parametrization:{string:[\"centripetal\",\"chordal\",\"uniform\"]},alpha:{number:number},__type__:{object:object,boolean:bool}},drawPoints:{enabled:{boolean:bool},onRender:{function:\"function\"},size:{number:number},style:{string:[\"square\",\"circle\"]},__type__:{object:object,boolean:bool,function:\"function\"}},dataAxis:{showMinorLabels:{boolean:bool},showMajorLabels:{boolean:bool},icons:{boolean:bool},width:{string:string,number:number},visible:{boolean:bool},alignZeros:{boolean:bool},left:{range:{min:{\nnumber:number,undefined:\"undefined\"},max:{number:number,undefined:\"undefined\"},__type__:{object:object}},format:{function:\"function\"},title:{text:{string:string,number:number,undefined:\"undefined\"},style:{string:string,undefined:\"undefined\"},__type__:{object:object}},__type__:{object:object}},right:{range:{min:{number:number,undefined:\"undefined\"},max:{number:number,undefined:\"undefined\"},__type__:{object:object}},format:{function:\"function\"},title:{text:{string:string,number:number,undefined:\"undefined\"},style:{string:string,undefined:\"undefined\"},__type__:{object:object}},__type__:{object:object}},__type__:{object:object}},legend:{enabled:{boolean:bool},icons:{boolean:bool},left:{visible:{boolean:bool},position:{string:[\"top-right\",\"bottom-right\",\"top-left\",\"bottom-left\"]},__type__:{object:object}},right:{visible:{boolean:bool},position:{string:[\"top-right\",\"bottom-right\",\"top-left\",\"bottom-left\"]},__type__:{object:object}},__type__:{object:object,boolean:bool}},groups:{visibility:{any:any},__type__:{object:object}},autoResize:{boolean:bool},throttleRedraw:{number:number},clickToUse:{boolean:bool},end:{number:number,date:date,string:string,moment:moment},format:{minorLabels:{millisecond:{string:string,undefined:\"undefined\"},second:{string:string,undefined:\"undefined\"},minute:{string:string,undefined:\"undefined\"},hour:{string:string,undefined:\"undefined\"},weekday:{string:string,undefined:\"undefined\"},day:{string:string,undefined:\"undefined\"},month:{string:string,undefined:\"undefined\"},year:{string:string,undefined:\"undefined\"},__type__:{object:object}},majorLabels:{millisecond:{string:string,undefined:\"undefined\"},second:{string:string,undefined:\"undefined\"},minute:{string:string,undefined:\"undefined\"},hour:{string:string,undefined:\"undefined\"},weekday:{string:string,undefined:\"undefined\"},day:{string:string,undefined:\"undefined\"},month:{string:string,undefined:\"undefined\"},year:{string:string,undefined:\"undefined\"},__type__:{object:object}},__type__:{object:object}},moment:{function:\"function\"},height:{string:string,number:number},hiddenDates:{start:{date:date,number:number,string:string,moment:moment},end:{date:date,number:number,string:string,moment:moment},repeat:{string:string},__type__:{object:object,array:array}},locale:{string:string},locales:{__any__:{any:any},__type__:{object:object}},max:{date:date,number:number,string:string,moment:moment},maxHeight:{number:number,string:string},maxMinorChars:{number:number},min:{date:date,number:number,string:string,moment:moment},minHeight:{number:number,string:string},moveable:{boolean:bool},multiselect:{boolean:bool},orientation:{string:string},showCurrentTime:{boolean:bool},showMajorLabels:{boolean:bool},showMinorLabels:{boolean:bool},start:{date:date,number:number,string:string,moment:moment},timeAxis:{scale:{string:string,undefined:\"undefined\"},step:{number:number,undefined:\"undefined\"},__type__:{object:object}},width:{string:string,number:number},zoomable:{boolean:bool},zoomKey:{string:[\"ctrlKey\",\"altKey\",\"metaKey\",\"\"]},zoomMax:{number:number},zoomMin:{number:number},zIndex:{number:number},__type__:{object:object}};var configureOptions={global:{sort:true,sampling:true,stack:false,shaded:{enabled:false,orientation:[\"zero\",\"top\",\"bottom\",\"group\"]},style:[\"line\",\"bar\",\"points\"],barChart:{width:[50,5,100,5],minWidth:[50,5,100,5],sideBySide:false,align:[\"left\",\"center\",\"right\"]},interpolation:{enabled:true,parametrization:[\"centripetal\",\"chordal\",\"uniform\"]},drawPoints:{enabled:true,size:[6,2,30,1],style:[\"square\",\"circle\"]},dataAxis:{showMinorLabels:true,showMajorLabels:true,icons:false,width:[40,0,200,1],visible:true,alignZeros:true,left:{title:{text:\"\",style:\"\"}},right:{title:{text:\"\",style:\"\"}}},legend:{enabled:false,icons:true,left:{visible:true,position:[\"top-right\",\"bottom-right\",\"top-left\",\"bottom-left\"]},right:{visible:true,position:[\"top-right\",\"bottom-right\",\"top-left\",\"bottom-left\"]}},autoResize:true,clickToUse:false,end:\"\",format:{minorLabels:{millisecond:\"SSS\",second:\"s\",minute:\"HH:mm\",hour:\"HH:mm\",weekday:\"ddd D\",day:\"D\",month:\"MMM\",year:\"YYYY\"},majorLabels:{millisecond:\"HH:mm:ss\",second:\"D MMMM HH:mm\",minute:\"ddd D MMMM\",hour:\"ddd D MMMM\",weekday:\"MMMM YYYY\",day:\"MMMM YYYY\",month:\"YYYY\",year:\"\"}},height:\"\",locale:\"\",max:\"\",maxHeight:\"\",maxMinorChars:[7,0,20,1],min:\"\",minHeight:\"\",moveable:true,orientation:[\"both\",\"bottom\",\"top\"],showCurrentTime:false,showMajorLabels:true,showMinorLabels:true,start:\"\",width:\"100%\",zoomable:true,zoomKey:[\"ctrlKey\",\"altKey\",\"metaKey\",\"\"],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1],zIndex:0}};exports.allOptions=allOptions;exports.configureOptions=configureOptions},function(module,exports,__webpack_require__){\"use strict\";var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function parseDOT(data){dot=data;return parseGraph()}var NODE_ATTR_MAPPING={fontsize:\"font.size\",fontcolor:\"font.color\",labelfontcolor:\"font.color\",fontname:\"font.face\",color:[\"color.border\",\"color.background\"],fillcolor:\"color.background\",tooltip:\"title\",labeltooltip:\"title\"};var EDGE_ATTR_MAPPING=(0,_create2[\"default\"])(NODE_ATTR_MAPPING);EDGE_ATTR_MAPPING.color=\"color.color\";EDGE_ATTR_MAPPING.style=\"dashes\";var TOKENTYPE={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3};var DELIMITERS={\"{\":true,\"}\":true,\"[\":true,\"]\":true,\";\":true,\"=\":true,\",\":true,\"->\":true,\"--\":true};var dot=\"\";var index=0;var c=\"\";var token=\"\";var tokenType=TOKENTYPE.NULL;function first(){index=0;c=dot.charAt(0)}function next(){index++;c=dot.charAt(index)}function nextPreview(){return dot.charAt(index+1)}var regexAlphaNumeric=/[a-zA-Z_0-9.:#]/;function isAlphaNumeric(c){return regexAlphaNumeric.test(c)}function merge(a,b){if(!a){a={}}if(b){for(var name in b){if(b.hasOwnProperty(name)){a[name]=b[name]}}}return a}function setValue(obj,path,value){var keys=path.split(\".\");var o=obj;while(keys.length){var key=keys.shift();if(keys.length){if(!o[key]){o[key]={}}o=o[key]}else{o[key]=value}}}function addNode(graph,node){var i,len;var current=null;var graphs=[graph];var root=graph;while(root.parent){graphs.push(root.parent);root=root.parent}if(root.nodes){for(i=0,len=root.nodes.length;i<len;i++){if(node.id===root.nodes[i].id){current=root.nodes[i];break}}}if(!current){current={id:node.id};if(graph.node){current.attr=merge(current.attr,graph.node)}}for(i=graphs.length-1;i>=0;i--){var g=graphs[i];if(!g.nodes){g.nodes=[]}if(g.nodes.indexOf(current)===-1){g.nodes.push(current)}}if(node.attr){current.attr=merge(current.attr,node.attr)}}function addEdge(graph,edge){if(!graph.edges){graph.edges=[]}graph.edges.push(edge);if(graph.edge){var attr=merge({},graph.edge);edge.attr=merge(attr,edge.attr)}}function createEdge(graph,from,to,type,attr){var edge={from:from,to:to,type:type};if(graph.edge){edge.attr=merge({},graph.edge)}edge.attr=merge(edge.attr||{},attr);return edge}function getToken(){tokenType=TOKENTYPE.NULL;token=\"\";while(c===\" \"||c===\"\\t\"||c===\"\\n\"||c===\"\\r\"){next()}do{var isComment=false;if(c===\"#\"){var i=index-1;while(dot.charAt(i)===\" \"||dot.charAt(i)===\"\\t\"){i--}if(dot.charAt(i)===\"\\n\"||dot.charAt(i)===\"\"){while(c!=\"\"&&c!=\"\\n\"){next()}isComment=true}}if(c===\"/\"&&nextPreview()===\"/\"){while(c!=\"\"&&c!=\"\\n\"){next()}isComment=true}if(c===\"/\"&&nextPreview()===\"*\"){while(c!=\"\"){if(c===\"*\"&&nextPreview()===\"/\"){next();next();break}else{next()}}isComment=true}while(c===\" \"||c===\"\\t\"||c===\"\\n\"||c===\"\\r\"){next()}}while(isComment);if(c===\"\"){tokenType=TOKENTYPE.DELIMITER;return}var c2=c+nextPreview();if(DELIMITERS[c2]){tokenType=TOKENTYPE.DELIMITER;token=c2;next();next();return}if(DELIMITERS[c]){tokenType=TOKENTYPE.DELIMITER;token=c;next();return}if(isAlphaNumeric(c)||c===\"-\"){token+=c;next();while(isAlphaNumeric(c)){token+=c;next()}if(token===\"false\"){token=false}else if(token===\"true\"){token=true}else if(!isNaN(Number(token))){token=Number(token)}tokenType=TOKENTYPE.IDENTIFIER;return}if(c==='\"'){next();while(c!=\"\"&&(c!='\"'||c==='\"'&&nextPreview()==='\"')){if(c==='\"'){token+=c;next()}else if(c===\"\\\\\"&&nextPreview()===\"n\"){token+=\"\\n\";next()}else{token+=c}next()}if(c!='\"'){throw newSyntaxError('End of string \" expected')}next();tokenType=TOKENTYPE.IDENTIFIER;return}tokenType=TOKENTYPE.UNKNOWN;while(c!=\"\"){token+=c;next()}throw new SyntaxError('Syntax error in part \"'+chop(token,30)+'\"')}function parseGraph(){var graph={};first();getToken();if(token===\"strict\"){graph.strict=true;getToken()}if(token===\"graph\"||token===\"digraph\"){graph.type=token;getToken()}if(tokenType===TOKENTYPE.IDENTIFIER){graph.id=token;getToken()}if(token!=\"{\"){throw newSyntaxError(\"Angle bracket { expected\")}getToken();parseStatements(graph);if(token!=\"}\"){throw newSyntaxError(\"Angle bracket } expected\")}getToken();if(token!==\"\"){throw newSyntaxError(\"End of file expected\")}getToken();delete graph.node;delete graph.edge;delete graph.graph;return graph}function parseStatements(graph){while(token!==\"\"&&token!=\"}\"){parseStatement(graph);if(token===\";\"){getToken()}}}function parseStatement(graph){var subgraph=parseSubgraph(graph);if(subgraph){parseEdge(graph,subgraph);return}var attr=parseAttributeStatement(graph);if(attr){return}if(tokenType!=TOKENTYPE.IDENTIFIER){throw newSyntaxError(\"Identifier expected\")}var id=token;getToken();if(token===\"=\"){getToken();if(tokenType!=TOKENTYPE.IDENTIFIER){throw newSyntaxError(\"Identifier expected\")}graph[id]=token;getToken()}else{parseNodeStatement(graph,id)}}function parseSubgraph(graph){var subgraph=null;if(token===\"subgraph\"){subgraph={};subgraph.type=\"subgraph\";getToken();if(tokenType===TOKENTYPE.IDENTIFIER){subgraph.id=token;getToken()}}if(token===\"{\"){getToken();if(!subgraph){subgraph={}}subgraph.parent=graph;subgraph.node=graph.node;subgraph.edge=graph.edge;subgraph.graph=graph.graph;parseStatements(subgraph);if(token!=\"}\"){throw newSyntaxError(\"Angle bracket } expected\")}getToken();delete subgraph.node;delete subgraph.edge;delete subgraph.graph;delete subgraph.parent;if(!graph.subgraphs){graph.subgraphs=[]}graph.subgraphs.push(subgraph)}return subgraph}function parseAttributeStatement(graph){if(token===\"node\"){getToken();graph.node=parseAttributeList();return\"node\"}else if(token===\"edge\"){getToken();graph.edge=parseAttributeList();return\"edge\"}else if(token===\"graph\"){getToken();graph.graph=parseAttributeList();return\"graph\"}return null}function parseNodeStatement(graph,id){var node={id:id};var attr=parseAttributeList();if(attr){node.attr=attr}addNode(graph,node);parseEdge(graph,id)}function parseEdge(graph,from){while(token===\"->\"||token===\"--\"){var to;var type=token;getToken();var subgraph=parseSubgraph(graph);if(subgraph){to=subgraph}else{if(tokenType!=TOKENTYPE.IDENTIFIER){throw newSyntaxError(\"Identifier or subgraph expected\")}to=token;addNode(graph,{id:to});getToken()}var attr=parseAttributeList();var edge=createEdge(graph,from,to,type,attr);addEdge(graph,edge);from=to}}function parseAttributeList(){var attr=null;var edgeStyles={dashed:true,solid:false,dotted:[1,5]};while(token===\"[\"){getToken();attr={};while(token!==\"\"&&token!=\"]\"){if(tokenType!=TOKENTYPE.IDENTIFIER){throw newSyntaxError(\"Attribute name expected\")}var name=token;getToken();if(token!=\"=\"){throw newSyntaxError(\"Equal sign = expected\")}getToken();if(tokenType!=TOKENTYPE.IDENTIFIER){throw newSyntaxError(\"Attribute value expected\")}var value=token;if(name===\"style\"){value=edgeStyles[value]}setValue(attr,name,value);getToken();if(token==\",\"){getToken()}}if(token!=\"]\"){throw newSyntaxError(\"Bracket ] expected\")}getToken()}return attr}function newSyntaxError(message){return new SyntaxError(message+', got \"'+chop(token,30)+'\" (char '+index+\")\")}function chop(text,maxLength){return text.length<=maxLength?text:text.substr(0,27)+\"...\"}function forEach2(array1,array2,fn){if(Array.isArray(array1)){array1.forEach(function(elem1){if(Array.isArray(array2)){array2.forEach(function(elem2){fn(elem1,elem2)})}else{fn(elem1,array2)}})}else{if(Array.isArray(array2)){array2.forEach(function(elem2){fn(array1,elem2)})}else{fn(array1,array2)}}}function setProp(object,path,value){var names=path.split(\".\");var prop=names.pop();var obj=object;for(var i=0;i<names.length;i++){var name=names[i];if(!(name in obj)){obj[name]={}}obj=obj[name]}obj[prop]=value;return object}function convertAttr(attr,mapping){var converted={};for(var prop in attr){if(attr.hasOwnProperty(prop)){var visProp=mapping[prop];if(Array.isArray(visProp)){visProp.forEach(function(visPropI){setProp(converted,visPropI,attr[prop])})}else if(typeof visProp===\"string\"){setProp(converted,visProp,attr[prop])}else{setProp(converted,prop,attr[prop])}}}return converted}function DOTToGraph(data){var dotData=parseDOT(data);var graphData={nodes:[],edges:[],options:{}};if(dotData.nodes){dotData.nodes.forEach(function(dotNode){var graphNode={id:dotNode.id,label:String(dotNode.label||dotNode.id)};merge(graphNode,convertAttr(dotNode.attr,NODE_ATTR_MAPPING));if(graphNode.image){graphNode.shape=\"image\"}graphData.nodes.push(graphNode)})}if(dotData.edges){var convertEdge=function convertEdge(dotEdge){var graphEdge={from:dotEdge.from,to:dotEdge.to};merge(graphEdge,convertAttr(dotEdge.attr,EDGE_ATTR_MAPPING));graphEdge.arrows=dotEdge.type===\"->\"?\"to\":undefined;return graphEdge};dotData.edges.forEach(function(dotEdge){var from,to;if(dotEdge.from instanceof Object){from=dotEdge.from.nodes}else{from={id:dotEdge.from}}if(dotEdge.to instanceof Object){to=dotEdge.to.nodes}else{to={id:dotEdge.to}}if(dotEdge.from instanceof Object&&dotEdge.from.edges){dotEdge.from.edges.forEach(function(subEdge){var graphEdge=convertEdge(subEdge);graphData.edges.push(graphEdge)})}forEach2(from,to,function(from,to){var subEdge=createEdge(graphData,from.id,to.id,dotEdge.type,dotEdge.attr);var graphEdge=convertEdge(subEdge);graphData.edges.push(graphEdge)});if(dotEdge.to instanceof Object&&dotEdge.to.edges){dotEdge.to.edges.forEach(function(subEdge){var graphEdge=convertEdge(subEdge);graphData.edges.push(graphEdge)})}})}if(dotData.attr){graphData.options=dotData.attr}return graphData}exports.parseDOT=parseDOT;exports.DOTToGraph=DOTToGraph},function(module,exports,__webpack_require__){\"use strict\";function parseGephi(gephiJSON,optionsObj){var edges=[];var nodes=[];var options={edges:{inheritColor:false},nodes:{fixed:false,parseColor:false}};if(optionsObj!==undefined){if(optionsObj.fixed!==undefined){options.nodes.fixed=optionsObj.fixed}if(optionsObj.parseColor!==undefined){options.nodes.parseColor=optionsObj.parseColor}if(optionsObj.inheritColor!==undefined){options.edges.inheritColor=optionsObj.inheritColor}}var gEdges=gephiJSON.edges;var gNodes=gephiJSON.nodes;for(var i=0;i<gEdges.length;i++){var edge={};var gEdge=gEdges[i];edge[\"id\"]=gEdge.id;edge[\"from\"]=gEdge.source;edge[\"to\"]=gEdge.target;edge[\"attributes\"]=gEdge.attributes;edge[\"label\"]=gEdge.label;edge[\"title\"]=gEdge.attributes!==undefined?gEdge.attributes.title:undefined;if(gEdge[\"type\"]===\"Directed\"){edge[\"arrows\"]=\"to\"}if(gEdge.color&&options.inheritColor===false){edge[\"color\"]=gEdge.color}edges.push(edge)}for(var j=0;j<gNodes.length;j++){var node={};var gNode=gNodes[j];node[\"id\"]=gNode.id;node[\"attributes\"]=gNode.attributes;node[\"x\"]=gNode.x;node[\"y\"]=gNode.y;node[\"label\"]=gNode.label;node[\"title\"]=gNode.attributes!==undefined?gNode.attributes.title:gNode.title;if(options.nodes.parseColor===true){node[\"color\"]=gNode.color}else{node[\"color\"]=gNode.color!==undefined?{background:gNode.color,border:gNode.color,highlight:{background:gNode.color,border:gNode.color},hover:{background:gNode.color,border:gNode.color}}:undefined}node[\"size\"]=gNode.size;node[\"fixed\"]=options.nodes.fixed&&gNode.x!==undefined&&gNode.y!==undefined;nodes.push(node)}return{nodes:nodes,edges:edges}}exports.parseGephi=parseGephi},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _CachedImage=__webpack_require__(185);var _CachedImage2=_interopRequireDefault(_CachedImage);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Images=function(){function Images(callback){(0,_classCallCheck3[\"default\"])(this,Images);this.images={};this.imageBroken={};this.callback=callback}(0,_createClass3[\"default\"])(Images,[{key:\"_tryloadBrokenUrl\",value:function _tryloadBrokenUrl(url,brokenUrl,imageToLoadBrokenUrlOn){if(url===undefined||imageToLoadBrokenUrlOn===undefined)return;if(brokenUrl===undefined){console.warn(\"No broken url image defined\");return}imageToLoadBrokenUrlOn.onerror=function(){console.error(\"Could not load brokenImage:\",brokenUrl)};imageToLoadBrokenUrlOn.image.src=brokenUrl}},{key:\"_redrawWithImage\",value:function _redrawWithImage(imageToRedrawWith){if(this.callback){this.callback(imageToRedrawWith)}}},{key:\"load\",value:function load(url,brokenUrl){var _this=this;var cachedImage=this.images[url];if(cachedImage)return cachedImage;var img=new _CachedImage2[\"default\"];this.images[url]=img;img.image.onload=function(){_this._fixImageCoordinates(img.image);img.init();_this._redrawWithImage(img)};img.image.onerror=function(){console.error(\"Could not load image:\",url);_this._tryloadBrokenUrl(url,brokenUrl,img)};img.image.src=url;return img}},{key:\"_fixImageCoordinates\",value:function _fixImageCoordinates(imageToCache){if(imageToCache.width===0){document.body.appendChild(imageToCache);imageToCache.width=imageToCache.offsetWidth;imageToCache.height=imageToCache.offsetHeight;document.body.removeChild(imageToCache)}}}]);return Images}();exports[\"default\"]=Images},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var ComponentUtil=__webpack_require__(48)[\"default\"];var LabelSplitter=__webpack_require__(191)[\"default\"];var multiFontStyle=[\"bold\",\"ital\",\"boldital\",\"mono\"];var Label=function(){function Label(body,options){var edgelabel=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;(0,_classCallCheck3[\"default\"])(this,Label);this.body=body;this.pointToSelf=false;this.baseSize=undefined;this.fontOptions={};this.setOptions(options);this.size={top:0,left:0,width:0,height:0,yLine:0};this.isEdgeLabel=edgelabel}(0,_createClass3[\"default\"])(Label,[{key:\"setOptions\",value:function setOptions(options){this.elementOptions=options;this.initFontOptions(options.font);if(ComponentUtil.isValidLabel(options.label)){this.labelDirty=true}else{options.label=\"\"}if(options.font!==undefined&&options.font!==null){if(typeof options.font===\"string\"){this.baseSize=this.fontOptions.size}else if((0,_typeof3[\"default\"])(options.font)===\"object\"){var size=options.font.size;if(size!==undefined){this.baseSize=size}}}}},{key:\"initFontOptions\",value:function initFontOptions(newFontOptions){var _this=this;util.forEach(multiFontStyle,function(style){_this.fontOptions[style]={}});if(Label.parseFontString(this.fontOptions,newFontOptions)){this.fontOptions.vadjust=0;return}util.forEach(newFontOptions,function(prop,n){if(prop!==undefined&&prop!==null&&(typeof prop===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(prop))!==\"object\"){_this.fontOptions[n]=prop}})}},{key:\"constrain\",value:function constrain(pile){var fontOptions={constrainWidth:false,maxWdt:-1,minWdt:-1,constrainHeight:false,minHgt:-1,valign:\"middle\"};var widthConstraint=util.topMost(pile,\"widthConstraint\");if(typeof widthConstraint===\"number\"){fontOptions.maxWdt=Number(widthConstraint);fontOptions.minWdt=Number(widthConstraint)}else if((typeof widthConstraint===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(widthConstraint))===\"object\"){var widthConstraintMaximum=util.topMost(pile,[\"widthConstraint\",\"maximum\"]);if(typeof widthConstraintMaximum===\"number\"){fontOptions.maxWdt=Number(widthConstraintMaximum)}var widthConstraintMinimum=util.topMost(pile,[\"widthConstraint\",\"minimum\"]);if(typeof widthConstraintMinimum===\"number\"){fontOptions.minWdt=Number(widthConstraintMinimum)}}var heightConstraint=util.topMost(pile,\"heightConstraint\");if(typeof heightConstraint===\"number\"){fontOptions.minHgt=Number(heightConstraint)}else if((typeof heightConstraint===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(heightConstraint))===\"object\"){var heightConstraintMinimum=util.topMost(pile,[\"heightConstraint\",\"minimum\"]);if(typeof heightConstraintMinimum===\"number\"){fontOptions.minHgt=Number(heightConstraintMinimum)}var heightConstraintValign=util.topMost(pile,[\"heightConstraint\",\"valign\"]);if(typeof heightConstraintValign===\"string\"){if(heightConstraintValign===\"top\"||heightConstraintValign===\"bottom\"){fontOptions.valign=heightConstraintValign}}}return fontOptions}},{key:\"update\",value:function update(options,pile){this.setOptions(options,true);this.propagateFonts(pile);util.deepExtend(this.fontOptions,this.constrain(pile));this.fontOptions.chooser=ComponentUtil.choosify(\"label\",pile)}},{key:\"adjustSizes\",value:function adjustSizes(margins){var widthBias=margins?margins.right+margins.left:0;if(this.fontOptions.constrainWidth){this.fontOptions.maxWdt-=widthBias;this.fontOptions.minWdt-=widthBias}var heightBias=margins?margins.top+margins.bottom:0;if(this.fontOptions.constrainHeight){this.fontOptions.minHgt-=heightBias}}},{key:\"addFontOptionsToPile\",value:function addFontOptionsToPile(dstPile,srcPile){for(var i=0;i<srcPile.length;++i){this.addFontToPile(dstPile,srcPile[i])}}},{key:\"addFontToPile\",value:function addFontToPile(pile,options){if(options===undefined)return;if(options.font===undefined||options.font===null)return;var item=options.font;pile.push(item)}},{key:\"getBasicOptions\",value:function getBasicOptions(pile){var ret={};for(var n=0;n<pile.length;++n){var fontOptions=pile[n];var tmpShorthand={};if(Label.parseFontString(tmpShorthand,fontOptions)){fontOptions=tmpShorthand}util.forEach(fontOptions,function(opt,name){if(opt===undefined)return;if(ret.hasOwnProperty(name))return;if(multiFontStyle.indexOf(name)!==-1){ret[name]={}}else{ret[name]=opt}})}return ret}},{key:\"getFontOption\",value:function getFontOption(pile,multiName,option){var multiFont=void 0;for(var n=0;n<pile.length;++n){var fontOptions=pile[n];if(fontOptions.hasOwnProperty(multiName)){multiFont=fontOptions[multiName];if(multiFont===undefined||multiFont===null)continue;var tmpShorthand={};if(Label.parseFontString(tmpShorthand,multiFont)){multiFont=tmpShorthand}if(multiFont.hasOwnProperty(option)){return multiFont[option]}}}if(this.fontOptions.hasOwnProperty(option)){return this.fontOptions[option]}throw new Error(\"Did not find value for multi-font for property: '\"+option+\"'\")}},{key:\"getFontOptions\",value:function getFontOptions(pile,multiName){var result={};var optionNames=[\"color\",\"size\",\"face\",\"mod\",\"vadjust\"];for(var i=0;i<optionNames.length;++i){var mod=optionNames[i];result[mod]=this.getFontOption(pile,multiName,mod)}return result}},{key:\"propagateFonts\",value:function propagateFonts(pile){var _this2=this;var fontPile=[];this.addFontOptionsToPile(fontPile,pile);this.fontOptions=this.getBasicOptions(fontPile);var _loop=function _loop(i){var mod=multiFontStyle[i];var modOptions=_this2.fontOptions[mod];var tmpMultiFontOptions=_this2.getFontOptions(fontPile,mod);util.forEach(tmpMultiFontOptions,function(option,n){modOptions[n]=option});modOptions.size=Number(modOptions.size);modOptions.vadjust=Number(modOptions.vadjust)};for(var i=0;i<multiFontStyle.length;++i){_loop(i)}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover){var baseline=arguments.length>5&&arguments[5]!==undefined?arguments[5]:\"middle\";if(this.elementOptions.label===undefined)return;var viewFontSize=this.fontOptions.size*this.body.view.scale;if(this.elementOptions.label&&viewFontSize<this.elementOptions.scaling.label.drawThreshold-1)return;if(viewFontSize>=this.elementOptions.scaling.label.maxVisible){viewFontSize=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale}this.calculateLabelSize(ctx,selected,hover,x,y,baseline);this._drawBackground(ctx);this._drawText(ctx,x,this.size.yLine,baseline,viewFontSize)}},{key:\"_drawBackground\",value:function _drawBackground(ctx){if(this.fontOptions.background!==undefined&&this.fontOptions.background!==\"none\"){ctx.fillStyle=this.fontOptions.background;var size=this.getSize();ctx.fillRect(size.left,size.top,size.width,size.height)}}},{key:\"_drawText\",value:function _drawText(ctx,x,y){var baseline=arguments.length>3&&arguments[3]!==undefined?arguments[3]:\"middle\";var viewFontSize=arguments[4];var _setAlignment2=this._setAlignment(ctx,x,y,baseline);var _setAlignment3=(0,_slicedToArray3[\"default\"])(_setAlignment2,2);x=_setAlignment3[0];y=_setAlignment3[1];ctx.textAlign=\"left\";x=x-this.size.width/2;if(this.fontOptions.valign&&this.size.height>this.size.labelHeight){if(this.fontOptions.valign===\"top\"){y-=(this.size.height-this.size.labelHeight)/2}if(this.fontOptions.valign===\"bottom\"){y+=(this.size.height-this.size.labelHeight)/2}}for(var i=0;i<this.lineCount;i++){var line=this.lines[i];if(line&&line.blocks){var width=0;if(this.isEdgeLabel||this.fontOptions.align===\"center\"){width+=(this.size.width-line.width)/2}else if(this.fontOptions.align===\"right\"){width+=this.size.width-line.width}for(var j=0;j<line.blocks.length;j++){var block=line.blocks[j];ctx.font=block.font;var _getColor2=this._getColor(block.color,viewFontSize,block.strokeColor),_getColor3=(0,_slicedToArray3[\"default\"])(_getColor2,2),fontColor=_getColor3[0],strokeColor=_getColor3[1];if(block.strokeWidth>0){ctx.lineWidth=block.strokeWidth;ctx.strokeStyle=strokeColor;ctx.lineJoin=\"round\"}ctx.fillStyle=fontColor;if(block.strokeWidth>0){ctx.strokeText(block.text,x+width,y+block.vadjust)}ctx.fillText(block.text,x+width,y+block.vadjust);width+=block.width}y+=line.height}}}},{key:\"_setAlignment\",value:function _setAlignment(ctx,x,y,baseline){if(this.isEdgeLabel&&this.fontOptions.align!==\"horizontal\"&&this.pointToSelf===false){x=0;y=0;var lineMargin=2;if(this.fontOptions.align===\"top\"){ctx.textBaseline=\"alphabetic\";y-=2*lineMargin}else if(this.fontOptions.align===\"bottom\"){ctx.textBaseline=\"hanging\";y+=2*lineMargin}else{ctx.textBaseline=\"middle\"}}else{ctx.textBaseline=baseline}return[x,y]}},{key:\"_getColor\",value:function _getColor(color,viewFontSize,initialStrokeColor){var fontColor=color||\"#000000\";var strokeColor=initialStrokeColor||\"#ffffff\";if(viewFontSize<=this.elementOptions.scaling.label.drawThreshold){var opacity=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-viewFontSize)));fontColor=util.overrideOpacity(fontColor,opacity);strokeColor=util.overrideOpacity(strokeColor,opacity)}return[fontColor,strokeColor]}},{key:\"getTextSize\",value:function getTextSize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;this._processLabel(ctx,selected,hover);return{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:\"getSize\",value:function getSize(){var lineMargin=2;var x=this.size.left;var y=this.size.top-.5*lineMargin;if(this.isEdgeLabel){var x2=-this.size.width*.5;switch(this.fontOptions.align){case\"middle\":x=x2;y=-this.size.height*.5;break;case\"top\":x=x2;y=-(this.size.height+lineMargin);break;case\"bottom\":x=x2;y=lineMargin;break}}var ret={left:x,top:y,width:this.size.width,height:this.size.height};return ret}},{key:\"calculateLabelSize\",value:function calculateLabelSize(ctx,selected,hover){var x=arguments.length>3&&arguments[3]!==undefined?arguments[3]:0;var y=arguments.length>4&&arguments[4]!==undefined?arguments[4]:0;var baseline=arguments.length>5&&arguments[5]!==undefined?arguments[5]:\"middle\";this._processLabel(ctx,selected,hover);this.size.left=x-this.size.width*.5;this.size.top=y-this.size.height*.5;this.size.yLine=y+(1-this.lineCount)*.5*this.fontOptions.size;if(baseline===\"hanging\"){this.size.top+=.5*this.fontOptions.size;this.size.top+=4;this.size.yLine+=4}}},{key:\"getFormattingValues\",value:function getFormattingValues(ctx,selected,hover,mod){var getValue=function getValue(fontOptions,mod,option){if(mod===\"normal\"){if(option===\"mod\")return\"\";return fontOptions[option]}if(fontOptions[mod][option]!==undefined){return fontOptions[mod][option]}else{return fontOptions[option]}};var values={color:getValue(this.fontOptions,mod,\"color\"),size:getValue(this.fontOptions,mod,\"size\"),face:getValue(this.fontOptions,mod,\"face\"),mod:getValue(this.fontOptions,mod,\"mod\"),vadjust:getValue(this.fontOptions,mod,\"vadjust\"),strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};if(selected||hover){if(mod===\"normal\"&&this.fontOptions.chooser===true&&this.elementOptions.labelHighlightBold){values.mod=\"bold\"}else{if(typeof this.fontOptions.chooser===\"function\"){this.fontOptions.chooser(values,this.elementOptions.id,selected,hover)}}}var fontString=\"\";if(values.mod!==undefined&&values.mod!==\"\"){fontString+=values.mod+\" \"}fontString+=values.size+\"px \"+values.face;ctx.font=fontString.replace(/\"/g,\"\");values.font=ctx.font;values.height=values.size;return values}},{key:\"differentState\",value:function differentState(selected,hover){return selected!==this.selectedState||hover!==this.hoverState}},{key:\"_processLabelText\",value:function _processLabelText(ctx,selected,hover,inText){var splitter=new LabelSplitter(ctx,this,selected,hover);return splitter.process(inText)}},{key:\"_processLabel\",value:function _processLabel(ctx,selected,hover){if(this.labelDirty===false&&!this.differentState(selected,hover))return;var state=this._processLabelText(ctx,selected,hover,this.elementOptions.label);if(this.fontOptions.minWdt>0&&state.width<this.fontOptions.minWdt){state.width=this.fontOptions.minWdt}this.size.labelHeight=state.height;if(this.fontOptions.minHgt>0&&state.height<this.fontOptions.minHgt){state.height=this.fontOptions.minHgt}this.lines=state.lines;this.lineCount=state.lines.length;this.size.width=state.width;this.size.height=state.height;this.selectedState=selected;this.hoverState=hover;this.labelDirty=false}},{key:\"visible\",value:function visible(){if(this.size.width===0||this.size.height===0||this.elementOptions.label===undefined){return false}var viewFontSize=this.fontOptions.size*this.body.view.scale;if(viewFontSize<this.elementOptions.scaling.label.drawThreshold-1){return false}return true}}],[{key:\"parseFontString\",value:function parseFontString(outOptions,inOptions){if(!inOptions||typeof inOptions!==\"string\")return false;var newOptionsArray=inOptions.split(\" \");outOptions.size=newOptionsArray[0].replace(\"px\",\"\");outOptions.face=newOptionsArray[1];outOptions.color=newOptionsArray[2];return true}}]);return Label}();exports[\"default\"]=Label},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var EndPoints=__webpack_require__(119)[\"default\"];var EdgeBase=function(){function EdgeBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,EdgeBase);this.body=body;this.labelModule=labelModule\n;this.options={};this.setOptions(options);this.colorDirty=true;this.color={};this.selectionWidth=2;this.hoverWidth=1.5;this.fromPoint=this.from;this.toPoint=this.to}(0,_createClass3[\"default\"])(EdgeBase,[{key:\"connect\",value:function connect(){this.from=this.body.nodes[this.options.from];this.to=this.body.nodes[this.options.to]}},{key:\"cleanup\",value:function cleanup(){return false}},{key:\"setOptions\",value:function setOptions(options){this.options=options;this.from=this.body.nodes[this.options.from];this.to=this.body.nodes[this.options.to];this.id=this.options.id}},{key:\"drawLine\",value:function drawLine(ctx,values,selected,hover,viaNode){ctx.strokeStyle=this.getColor(ctx,values,selected,hover);ctx.lineWidth=values.width;if(values.dashes!==false){this._drawDashedLine(ctx,values,viaNode)}else{this._drawLine(ctx,values,viaNode)}}},{key:\"_drawLine\",value:function _drawLine(ctx,values,viaNode,fromPoint,toPoint){if(this.from!=this.to){this._line(ctx,values,viaNode,fromPoint,toPoint)}else{var _getCircleData2=this._getCircleData(ctx),_getCircleData3=(0,_slicedToArray3[\"default\"])(_getCircleData2,3),x=_getCircleData3[0],y=_getCircleData3[1],radius=_getCircleData3[2];this._circle(ctx,values,x,y,radius)}}},{key:\"_drawDashedLine\",value:function _drawDashedLine(ctx,values,viaNode,fromPoint,toPoint){ctx.lineCap=\"round\";var pattern=[5,5];if(Array.isArray(values.dashes)===true){pattern=values.dashes}if(ctx.setLineDash!==undefined){ctx.save();ctx.setLineDash(pattern);ctx.lineDashOffset=0;if(this.from!=this.to){this._line(ctx,values,viaNode)}else{var _getCircleData4=this._getCircleData(ctx),_getCircleData5=(0,_slicedToArray3[\"default\"])(_getCircleData4,3),x=_getCircleData5[0],y=_getCircleData5[1],radius=_getCircleData5[2];this._circle(ctx,values,x,y,radius)}ctx.setLineDash([0]);ctx.lineDashOffset=0;ctx.restore()}else{if(this.from!=this.to){ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,pattern)}else{var _getCircleData6=this._getCircleData(ctx),_getCircleData7=(0,_slicedToArray3[\"default\"])(_getCircleData6,3),_x=_getCircleData7[0],_y=_getCircleData7[1],_radius=_getCircleData7[2];this._circle(ctx,values,_x,_y,_radius)}this.enableShadow(ctx,values);ctx.stroke();this.disableShadow(ctx,values)}}},{key:\"findBorderPosition\",value:function findBorderPosition(nearNode,ctx,options){if(this.from!=this.to){return this._findBorderPosition(nearNode,ctx,options)}else{return this._findBorderPositionCircle(nearNode,ctx,options)}}},{key:\"findBorderPositions\",value:function findBorderPositions(ctx){var from={};var to={};if(this.from!=this.to){from=this._findBorderPosition(this.from,ctx);to=this._findBorderPosition(this.to,ctx)}else{var _getCircleData$slice=this._getCircleData(ctx).slice(0,2),_getCircleData$slice2=(0,_slicedToArray3[\"default\"])(_getCircleData$slice,2),x=_getCircleData$slice2[0],y=_getCircleData$slice2[1];from=this._findBorderPositionCircle(this.from,ctx,{x:x,y:y,low:.25,high:.6,direction:-1});to=this._findBorderPositionCircle(this.from,ctx,{x:x,y:y,low:.6,high:.8,direction:1})}return{from:from,to:to}}},{key:\"_getCircleData\",value:function _getCircleData(ctx){var x=void 0,y=void 0;var node=this.from;var radius=this.options.selfReferenceSize;if(ctx!==undefined){if(node.shape.width===undefined){node.shape.resize(ctx)}}if(node.shape.width>node.shape.height){x=node.x+node.shape.width*.5;y=node.y-radius}else{x=node.x+radius;y=node.y-node.shape.height*.5}return[x,y,radius]}},{key:\"_pointOnCircle\",value:function _pointOnCircle(x,y,radius,percentage){var angle=percentage*2*Math.PI;return{x:x+radius*Math.cos(angle),y:y-radius*Math.sin(angle)}}},{key:\"_findBorderPositionCircle\",value:function _findBorderPositionCircle(node,ctx,options){var x=options.x;var y=options.y;var low=options.low;var high=options.high;var direction=options.direction;var maxIterations=10;var iteration=0;var radius=this.options.selfReferenceSize;var pos=void 0,angle=void 0,distanceToBorder=void 0,distanceToPoint=void 0,difference=void 0;var threshold=.05;var middle=(low+high)*.5;while(low<=high&&iteration<maxIterations){middle=(low+high)*.5;pos=this._pointOnCircle(x,y,radius,middle);angle=Math.atan2(node.y-pos.y,node.x-pos.x);distanceToBorder=node.distanceToBorder(ctx,angle);distanceToPoint=Math.sqrt(Math.pow(pos.x-node.x,2)+Math.pow(pos.y-node.y,2));difference=distanceToBorder-distanceToPoint;if(Math.abs(difference)<threshold){break}else if(difference>0){if(direction>0){low=middle}else{high=middle}}else{if(direction>0){high=middle}else{low=middle}}iteration++}pos.t=middle;return pos}},{key:\"getLineWidth\",value:function getLineWidth(selected,hover){if(selected===true){return Math.max(this.selectionWidth,.3/this.body.view.scale)}else{if(hover===true){return Math.max(this.hoverWidth,.3/this.body.view.scale)}else{return Math.max(this.options.width,.3/this.body.view.scale)}}}},{key:\"getColor\",value:function getColor(ctx,values,selected,hover){if(values.inheritsColor!==false){if(values.inheritsColor===\"both\"&&this.from.id!==this.to.id){var grd=ctx.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);var fromColor=void 0,toColor=void 0;fromColor=this.from.options.color.highlight.border;toColor=this.to.options.color.highlight.border;if(this.from.selected===false&&this.to.selected===false){fromColor=util.overrideOpacity(this.from.options.color.border,values.opacity);toColor=util.overrideOpacity(this.to.options.color.border,values.opacity)}else if(this.from.selected===true&&this.to.selected===false){toColor=this.to.options.color.border}else if(this.from.selected===false&&this.to.selected===true){fromColor=this.from.options.color.border}grd.addColorStop(0,fromColor);grd.addColorStop(1,toColor);return grd}if(values.inheritsColor===\"to\"){return util.overrideOpacity(this.to.options.color.border,values.opacity)}else{return util.overrideOpacity(this.from.options.color.border,values.opacity)}}else{return util.overrideOpacity(values.color,values.opacity)}}},{key:\"_circle\",value:function _circle(ctx,values,x,y,radius){this.enableShadow(ctx,values);ctx.beginPath();ctx.arc(x,y,radius,0,2*Math.PI,false);ctx.stroke();this.disableShadow(ctx,values)}},{key:\"getDistanceToEdge\",value:function getDistanceToEdge(x1,y1,x2,y2,x3,y3,via,values){var returnValue=0;if(this.from!=this.to){returnValue=this._getDistanceToEdge(x1,y1,x2,y2,x3,y3,via)}else{var _getCircleData8=this._getCircleData(undefined),_getCircleData9=(0,_slicedToArray3[\"default\"])(_getCircleData8,3),x=_getCircleData9[0],y=_getCircleData9[1],radius=_getCircleData9[2];var dx=x-x3;var dy=y-y3;returnValue=Math.abs(Math.sqrt(dx*dx+dy*dy)-radius)}return returnValue}},{key:\"_getDistanceToLine\",value:function _getDistanceToLine(x1,y1,x2,y2,x3,y3){var px=x2-x1;var py=y2-y1;var something=px*px+py*py;var u=((x3-x1)*px+(y3-y1)*py)/something;if(u>1){u=1}else if(u<0){u=0}var x=x1+u*px;var y=y1+u*py;var dx=x-x3;var dy=y-y3;return Math.sqrt(dx*dx+dy*dy)}},{key:\"getArrowData\",value:function getArrowData(ctx,position,viaNode,selected,hover,values){var angle=void 0;var arrowPoint=void 0;var node1=void 0;var node2=void 0;var guideOffset=void 0;var scaleFactor=void 0;var type=void 0;var lineWidth=values.width;if(position===\"from\"){node1=this.from;node2=this.to;guideOffset=.1;scaleFactor=values.fromArrowScale;type=values.fromArrowType}else if(position===\"to\"){node1=this.to;node2=this.from;guideOffset=-.1;scaleFactor=values.toArrowScale;type=values.toArrowType}else{node1=this.to;node2=this.from;scaleFactor=values.middleArrowScale;type=values.middleArrowType}if(node1!=node2){if(position!==\"middle\"){if(this.options.smooth.enabled===true){arrowPoint=this.findBorderPosition(node1,ctx,{via:viaNode});var guidePos=this.getPoint(Math.max(0,Math.min(1,arrowPoint.t+guideOffset)),viaNode);angle=Math.atan2(arrowPoint.y-guidePos.y,arrowPoint.x-guidePos.x)}else{angle=Math.atan2(node1.y-node2.y,node1.x-node2.x);arrowPoint=this.findBorderPosition(node1,ctx)}}else{angle=Math.atan2(node1.y-node2.y,node1.x-node2.x);arrowPoint=this.getPoint(.5,viaNode)}}else{var _getCircleData10=this._getCircleData(ctx),_getCircleData11=(0,_slicedToArray3[\"default\"])(_getCircleData10,3),x=_getCircleData11[0],y=_getCircleData11[1],radius=_getCircleData11[2];if(position===\"from\"){arrowPoint=this.findBorderPosition(this.from,ctx,{x:x,y:y,low:.25,high:.6,direction:-1});angle=arrowPoint.t*-2*Math.PI+1.5*Math.PI+.1*Math.PI}else if(position===\"to\"){arrowPoint=this.findBorderPosition(this.from,ctx,{x:x,y:y,low:.6,high:1,direction:1});angle=arrowPoint.t*-2*Math.PI+1.5*Math.PI-1.1*Math.PI}else{arrowPoint=this._pointOnCircle(x,y,radius,.175);angle=3.9269908169872414}}if(position===\"middle\"&&scaleFactor<0)lineWidth*=-1;var length=15*scaleFactor+3*lineWidth;var xi=arrowPoint.x-length*.9*Math.cos(angle);var yi=arrowPoint.y-length*.9*Math.sin(angle);var arrowCore={x:xi,y:yi};return{point:arrowPoint,core:arrowCore,angle:angle,length:length,type:type}}},{key:\"drawArrowHead\",value:function drawArrowHead(ctx,values,selected,hover,arrowData){ctx.strokeStyle=this.getColor(ctx,values,selected,hover);ctx.fillStyle=ctx.strokeStyle;ctx.lineWidth=values.width;EndPoints.draw(ctx,arrowData);this.enableShadow(ctx,values);ctx.fill();this.disableShadow(ctx,values)}},{key:\"enableShadow\",value:function enableShadow(ctx,values){if(values.shadow===true){ctx.shadowColor=values.shadowColor;ctx.shadowBlur=values.shadowSize;ctx.shadowOffsetX=values.shadowX;ctx.shadowOffsetY=values.shadowY}}},{key:\"disableShadow\",value:function disableShadow(ctx,values){if(values.shadow===true){ctx.shadowColor=\"rgba(0,0,0,0)\";ctx.shadowBlur=0;ctx.shadowOffsetX=0;ctx.shadowOffsetY=0}}}]);return EdgeBase}();exports[\"default\"]=EdgeBase},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var EndPoint=function(){function EndPoint(){(0,_classCallCheck3[\"default\"])(this,EndPoint)}(0,_createClass3[\"default\"])(EndPoint,null,[{key:\"transform\",value:function transform(points,arrowData){if(!(points instanceof Array)){points=[points]}var x=arrowData.point.x;var y=arrowData.point.y;var angle=arrowData.angle;var length=arrowData.length;for(var i=0;i<points.length;++i){var p=points[i];var xt=p.x*Math.cos(angle)-p.y*Math.sin(angle);var yt=p.x*Math.sin(angle)+p.y*Math.cos(angle);p.x=x+length*xt;p.y=y+length*yt}}},{key:\"drawPath\",value:function drawPath(ctx,points){ctx.beginPath();ctx.moveTo(points[0].x,points[0].y);for(var i=1;i<points.length;++i){ctx.lineTo(points[i].x,points[i].y)}ctx.closePath()}}]);return EndPoint}();var Arrow=function(_EndPoint){(0,_inherits3[\"default\"])(Arrow,_EndPoint);function Arrow(){(0,_classCallCheck3[\"default\"])(this,Arrow);return(0,_possibleConstructorReturn3[\"default\"])(this,(Arrow.__proto__||(0,_getPrototypeOf2[\"default\"])(Arrow)).apply(this,arguments))}(0,_createClass3[\"default\"])(Arrow,null,[{key:\"draw\",value:function draw(ctx,arrowData){var points=[{x:0,y:0},{x:-1,y:.3},{x:-.9,y:0},{x:-1,y:-.3}];EndPoint.transform(points,arrowData);EndPoint.drawPath(ctx,points)}}]);return Arrow}(EndPoint);var Circle=function(){function Circle(){(0,_classCallCheck3[\"default\"])(this,Circle)}(0,_createClass3[\"default\"])(Circle,null,[{key:\"draw\",value:function draw(ctx,arrowData){var point={x:-.4,y:0};EndPoint.transform(point,arrowData);ctx.circle(point.x,point.y,arrowData.length*.4)}}]);return Circle}();var Bar=function(){function Bar(){(0,_classCallCheck3[\"default\"])(this,Bar)}(0,_createClass3[\"default\"])(Bar,null,[{key:\"draw\",value:function draw(ctx,arrowData){var points=[{x:0,y:.5},{x:0,y:-.5},{x:-.15,y:-.5},{x:-.15,y:.5}];EndPoint.transform(points,arrowData);EndPoint.drawPath(ctx,points)}}]);return Bar}();var EndPoints=function(){function EndPoints(){(0,_classCallCheck3[\"default\"])(this,EndPoints)}(0,_createClass3[\"default\"])(EndPoints,null,[{key:\"draw\",value:function draw(ctx,arrowData){var type;if(arrowData.type){type=arrowData.type.toLowerCase()}switch(type){case\"circle\":Circle.draw(ctx,arrowData);break;case\"bar\":Bar.draw(ctx,arrowData);break;case\"arrow\":default:Arrow.draw(ctx,arrowData)}}}]);return EndPoints}();exports[\"default\"]=EndPoints},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var BarnesHutSolver=function(){function BarnesHutSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,BarnesHutSolver);this.body=body;this.physicsBody=physicsBody;this.barnesHutTree;this.setOptions(options);this.randomSeed=5}(0,_createClass3[\"default\"])(BarnesHutSolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options;this.thetaInversed=1/this.options.theta;this.overlapAvoidanceFactor=1-Math.max(0,Math.min(1,this.options.avoidOverlap))}},{key:\"seededRandom\",value:function seededRandom(){var x=Math.sin(this.randomSeed++)*1e4;return x-Math.floor(x)}},{key:\"solve\",value:function solve(){if(this.options.gravitationalConstant!==0&&this.physicsBody.physicsNodeIndices.length>0){var node=void 0;var nodes=this.body.nodes;var nodeIndices=this.physicsBody.physicsNodeIndices;var nodeCount=nodeIndices.length;var barnesHutTree=this._formBarnesHutTree(nodes,nodeIndices);this.barnesHutTree=barnesHutTree;for(var i=0;i<nodeCount;i++){node=nodes[nodeIndices[i]];if(node.options.mass>0){this._getForceContributions(barnesHutTree.root,node)}}}}},{key:\"_getForceContributions\",value:function _getForceContributions(parentBranch,node){this._getForceContribution(parentBranch.children.NW,node);this._getForceContribution(parentBranch.children.NE,node);this._getForceContribution(parentBranch.children.SW,node);this._getForceContribution(parentBranch.children.SE,node)}},{key:\"_getForceContribution\",value:function _getForceContribution(parentBranch,node){if(parentBranch.childrenCount>0){var dx=void 0,dy=void 0,distance=void 0;dx=parentBranch.centerOfMass.x-node.x;dy=parentBranch.centerOfMass.y-node.y;distance=Math.sqrt(dx*dx+dy*dy);if(distance*parentBranch.calcSize>this.thetaInversed){this._calculateForces(distance,dx,dy,node,parentBranch)}else{if(parentBranch.childrenCount===4){this._getForceContributions(parentBranch,node)}else{if(parentBranch.children.data.id!=node.id){this._calculateForces(distance,dx,dy,node,parentBranch)}}}}}},{key:\"_calculateForces\",value:function _calculateForces(distance,dx,dy,node,parentBranch){if(distance===0){distance=.1;dx=distance}if(this.overlapAvoidanceFactor<1&&node.shape.radius){distance=Math.max(.1+this.overlapAvoidanceFactor*node.shape.radius,distance-node.shape.radius)}var gravityForce=this.options.gravitationalConstant*parentBranch.mass*node.options.mass/Math.pow(distance,3);var fx=dx*gravityForce;var fy=dy*gravityForce;this.physicsBody.forces[node.id].x+=fx;this.physicsBody.forces[node.id].y+=fy}},{key:\"_formBarnesHutTree\",value:function _formBarnesHutTree(nodes,nodeIndices){var node=void 0;var nodeCount=nodeIndices.length;var minX=nodes[nodeIndices[0]].x;var minY=nodes[nodeIndices[0]].y;var maxX=nodes[nodeIndices[0]].x;var maxY=nodes[nodeIndices[0]].y;for(var i=1;i<nodeCount;i++){var _node=nodes[nodeIndices[i]];var x=_node.x;var y=_node.y;if(_node.options.mass>0){if(x<minX){minX=x}if(x>maxX){maxX=x}if(y<minY){minY=y}if(y>maxY){maxY=y}}}var sizeDiff=Math.abs(maxX-minX)-Math.abs(maxY-minY);if(sizeDiff>0){minY-=.5*sizeDiff;maxY+=.5*sizeDiff}else{minX+=.5*sizeDiff;maxX-=.5*sizeDiff}var minimumTreeSize=1e-5;var rootSize=Math.max(minimumTreeSize,Math.abs(maxX-minX));var halfRootSize=.5*rootSize;var centerX=.5*(minX+maxX),centerY=.5*(minY+maxY);var barnesHutTree={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:centerX-halfRootSize,maxX:centerX+halfRootSize,minY:centerY-halfRootSize,maxY:centerY+halfRootSize},size:rootSize,calcSize:1/rootSize,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(barnesHutTree.root);for(var _i=0;_i<nodeCount;_i++){node=nodes[nodeIndices[_i]];if(node.options.mass>0){this._placeInTree(barnesHutTree.root,node)}}return barnesHutTree}},{key:\"_updateBranchMass\",value:function _updateBranchMass(parentBranch,node){var centerOfMass=parentBranch.centerOfMass;var totalMass=parentBranch.mass+node.options.mass;var totalMassInv=1/totalMass;centerOfMass.x=centerOfMass.x*parentBranch.mass+node.x*node.options.mass;centerOfMass.x*=totalMassInv;centerOfMass.y=centerOfMass.y*parentBranch.mass+node.y*node.options.mass;centerOfMass.y*=totalMassInv;parentBranch.mass=totalMass;var biggestSize=Math.max(Math.max(node.height,node.radius),node.width);parentBranch.maxWidth=parentBranch.maxWidth<biggestSize?biggestSize:parentBranch.maxWidth}},{key:\"_placeInTree\",value:function _placeInTree(parentBranch,node,skipMassUpdate){if(skipMassUpdate!=true||skipMassUpdate===undefined){this._updateBranchMass(parentBranch,node)}var range=parentBranch.children.NW.range;var region=void 0;if(range.maxX>node.x){if(range.maxY>node.y){region=\"NW\"}else{region=\"SW\"}}else{if(range.maxY>node.y){region=\"NE\"}else{region=\"SE\"}}this._placeInRegion(parentBranch,node,region)}},{key:\"_placeInRegion\",value:function _placeInRegion(parentBranch,node,region){var children=parentBranch.children[region];switch(children.childrenCount){case 0:children.children.data=node;children.childrenCount=1;this._updateBranchMass(children,node);break;case 1:if(children.children.data.x===node.x&&children.children.data.y===node.y){node.x+=this.seededRandom();node.y+=this.seededRandom()}else{this._splitBranch(children);this._placeInTree(children,node)}break;case 4:this._placeInTree(children,node);break}}},{key:\"_splitBranch\",value:function _splitBranch(parentBranch){var containedNode=null;if(parentBranch.childrenCount===1){containedNode=parentBranch.children.data;parentBranch.mass=0;parentBranch.centerOfMass.x=0;parentBranch.centerOfMass.y=0}parentBranch.childrenCount=4;parentBranch.children.data=null;this._insertRegion(parentBranch,\"NW\");this._insertRegion(parentBranch,\"NE\");this._insertRegion(parentBranch,\"SW\");this._insertRegion(parentBranch,\"SE\");if(containedNode!=null){this._placeInTree(parentBranch,containedNode)}}},{key:\"_insertRegion\",value:function _insertRegion(parentBranch,region){var minX=void 0,maxX=void 0,minY=void 0,maxY=void 0;var childSize=.5*parentBranch.size;switch(region){case\"NW\":minX=parentBranch.range.minX;maxX=parentBranch.range.minX+childSize;minY=parentBranch.range.minY;maxY=parentBranch.range.minY+childSize;break;case\"NE\":minX=parentBranch.range.minX+childSize;maxX=parentBranch.range.maxX;minY=parentBranch.range.minY;maxY=parentBranch.range.minY+childSize;break;case\"SW\":minX=parentBranch.range.minX;maxX=parentBranch.range.minX+childSize;minY=parentBranch.range.minY+childSize;maxY=parentBranch.range.maxY;break;case\"SE\":minX=parentBranch.range.minX+childSize;maxX=parentBranch.range.maxX;minY=parentBranch.range.minY+childSize;maxY=parentBranch.range.maxY;break}parentBranch.children[region]={centerOfMass:{x:0,y:0},mass:0,range:{minX:minX,maxX:maxX,minY:minY,maxY:maxY},size:.5*parentBranch.size,calcSize:2*parentBranch.calcSize,children:{data:null},maxWidth:0,level:parentBranch.level+1,childrenCount:0}}},{key:\"_debug\",value:function _debug(ctx,color){if(this.barnesHutTree!==undefined){ctx.lineWidth=1;this._drawBranch(this.barnesHutTree.root,ctx,color)}}},{key:\"_drawBranch\",value:function _drawBranch(branch,ctx,color){if(color===undefined){color=\"#FF0000\"}if(branch.childrenCount===4){this._drawBranch(branch.children.NW,ctx);this._drawBranch(branch.children.NE,ctx);this._drawBranch(branch.children.SE,ctx);this._drawBranch(branch.children.SW,ctx)}ctx.strokeStyle=color;ctx.beginPath();ctx.moveTo(branch.range.minX,branch.range.minY);ctx.lineTo(branch.range.maxX,branch.range.minY);ctx.stroke();ctx.beginPath();ctx.moveTo(branch.range.maxX,branch.range.minY);ctx.lineTo(branch.range.maxX,branch.range.maxY);ctx.stroke();ctx.beginPath();ctx.moveTo(branch.range.maxX,branch.range.maxY);ctx.lineTo(branch.range.minX,branch.range.maxY);ctx.stroke();ctx.beginPath();ctx.moveTo(branch.range.minX,branch.range.maxY);ctx.lineTo(branch.range.minX,branch.range.minY);ctx.stroke()}}]);return BarnesHutSolver}();exports[\"default\"]=BarnesHutSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CentralGravitySolver=function(){function CentralGravitySolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,CentralGravitySolver);this.body=body;this.physicsBody=physicsBody;this.setOptions(options)}(0,_createClass3[\"default\"])(CentralGravitySolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"solve\",value:function solve(){var dx=void 0,dy=void 0,distance=void 0,node=void 0;var nodes=this.body.nodes;var nodeIndices=this.physicsBody.physicsNodeIndices;var forces=this.physicsBody.forces;for(var i=0;i<nodeIndices.length;i++){var nodeId=nodeIndices[i];node=nodes[nodeId];dx=-node.x;dy=-node.y;distance=Math.sqrt(dx*dx+dy*dy);this._calculateForces(distance,dx,dy,forces,node)}}},{key:\"_calculateForces\",value:function _calculateForces(distance,dx,dy,forces,node){var gravityForce=distance===0?0:this.options.centralGravity/distance;forces[node.id].x=dx*gravityForce;forces[node.id].y=dy*gravityForce}}]);return CentralGravitySolver}();exports[\"default\"]=CentralGravitySolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var string=\"string\";var bool=\"boolean\";var number=\"number\";var array=\"array\";var object=\"object\";var dom=\"dom\";var any=\"any\";var endPoints=[\"arrow\",\"circle\",\"bar\"];var allOptions={configure:{enabled:{boolean:bool},filter:{boolean:bool,string:string,array:array,function:\"function\"},container:{dom:dom},showButton:{boolean:bool},__type__:{object:object,boolean:bool,string:string,array:array,function:\"function\"}},edges:{arrows:{to:{enabled:{boolean:bool},scaleFactor:{number:number},type:{string:endPoints},__type__:{object:object,boolean:bool}},middle:{enabled:{boolean:bool},scaleFactor:{number:number},type:{string:endPoints},__type__:{object:object,boolean:bool}},from:{enabled:{boolean:bool},scaleFactor:{number:number},type:{string:endPoints},__type__:{object:object,boolean:bool}},__type__:{string:[\"from\",\"to\",\"middle\"],object:object}},arrowStrikethrough:{boolean:bool},chosen:{label:{boolean:bool,function:\"function\"},edge:{boolean:bool,function:\"function\"},__type__:{object:object,boolean:bool}},color:{color:{string:string},highlight:{string:string},hover:{string:string},inherit:{string:[\"from\",\"to\",\"both\"],boolean:bool},opacity:{number:number},__type__:{object:object,string:string}},dashes:{boolean:bool,array:array},font:{color:{string:string},size:{number:number},face:{string:string},background:{string:string},strokeWidth:{number:number},strokeColor:{string:string},align:{string:[\"horizontal\",\"top\",\"middle\",\"bottom\"]},vadjust:{number:number},multi:{boolean:bool,string:string},bold:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},boldital:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},ital:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},mono:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},__type__:{object:object,string:string}},hidden:{boolean:bool},hoverWidth:{function:\"function\",number:number},label:{string:string,undefined:\"undefined\"},labelHighlightBold:{boolean:bool},length:{number:number,undefined:\"undefined\"},physics:{boolean:bool},scaling:{min:{number:number},max:{number:number},label:{enabled:{boolean:bool},min:{number:number},max:{number:number},maxVisible:{number:number},drawThreshold:{number:number},__type__:{object:object,boolean:bool}},customScalingFunction:{function:\"function\"},__type__:{object:object}},selectionWidth:{function:\"function\",number:number},selfReferenceSize:{number:number},shadow:{enabled:{boolean:bool},color:{string:string},size:{number:number},x:{number:number},y:{number:number},__type__:{object:object,boolean:bool}},smooth:{enabled:{boolean:bool},type:{string:[\"dynamic\",\"continuous\",\"discrete\",\"diagonalCross\",\"straightCross\",\"horizontal\",\"vertical\",\"curvedCW\",\"curvedCCW\",\"cubicBezier\"]},roundness:{number:number},forceDirection:{string:[\"horizontal\",\"vertical\",\"none\"],boolean:bool},__type__:{object:object,boolean:bool}},title:{string:string,undefined:\"undefined\"},width:{number:number},widthConstraint:{maximum:{number:number},__type__:{object:object,boolean:bool,number:number}},value:{number:number,undefined:\"undefined\"},__type__:{object:object}},groups:{useDefaultGroups:{boolean:bool},__any__:\"get from nodes, will be overwritten below\",__type__:{object:object}},interaction:{dragNodes:{boolean:bool},dragView:{boolean:bool},hideEdgesOnDrag:{boolean:bool},hideNodesOnDrag:{boolean:bool},hover:{boolean:bool},keyboard:{enabled:{boolean:bool},speed:{x:{number:number},y:{number:number},zoom:{number:number},__type__:{object:object}},bindToWindow:{boolean:bool},__type__:{object:object,boolean:bool}},multiselect:{boolean:bool},navigationButtons:{boolean:bool},selectable:{boolean:bool},selectConnectedEdges:{boolean:bool},hoverConnectedEdges:{boolean:bool},tooltipDelay:{number:number},zoomView:{boolean:bool},__type__:{object:object}},layout:{randomSeed:{undefined:\"undefined\",number:number},improvedLayout:{boolean:bool},hierarchical:{enabled:{boolean:bool},levelSeparation:{number:number},nodeSpacing:{number:number},treeSpacing:{number:number},blockShifting:{boolean:bool},edgeMinimization:{boolean:bool},parentCentralization:{boolean:bool},direction:{string:[\"UD\",\"DU\",\"LR\",\"RL\"]},sortMethod:{string:[\"hubsize\",\"directed\"]},__type__:{object:object,boolean:bool}},__type__:{object:object}},manipulation:{enabled:{boolean:bool},initiallyActive:{boolean:bool},addNode:{boolean:bool,function:\"function\"},addEdge:{boolean:bool,function:\"function\"},editNode:{function:\"function\"},editEdge:{editWithoutDrag:{function:\"function\"},__type__:{object:object,boolean:bool,function:\"function\"}},deleteNode:{boolean:bool,function:\"function\"},deleteEdge:{boolean:bool,function:\"function\"},controlNodeStyle:\"get from nodes, will be overwritten below\",__type__:{object:object,boolean:bool}},nodes:{borderWidth:{number:number},borderWidthSelected:{number:number,undefined:\"undefined\"},brokenImage:{string:string,undefined:\"undefined\"},chosen:{label:{boolean:bool,function:\"function\"},node:{boolean:bool,function:\"function\"},__type__:{object:object,boolean:bool}},color:{border:{string:string},background:{string:string},highlight:{border:{string:string},background:{string:string},__type__:{object:object,string:string}},hover:{border:{string:string},background:{string:string},__type__:{object:object,string:string}},__type__:{object:object,string:string}},fixed:{x:{boolean:bool},y:{boolean:bool},__type__:{object:object,boolean:bool}},font:{align:{string:string},color:{string:string},size:{number:number},face:{string:string},background:{string:string},strokeWidth:{number:number},strokeColor:{string:string},vadjust:{number:number},multi:{boolean:bool,string:string},bold:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},boldital:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},ital:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},mono:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},__type__:{object:object,string:string}},group:{string:string,number:number,undefined:\"undefined\"},heightConstraint:{minimum:{number:number},valign:{string:string},__type__:{object:object,boolean:bool,number:number}},hidden:{boolean:bool},icon:{face:{string:string},code:{string:string},size:{number:number},color:{string:string},__type__:{object:object}},id:{string:string,number:number},image:{selected:{string:string,undefined:\"undefined\"},unselected:{string:string,undefined:\"undefined\"},__type__:{object:object,string:string}},label:{string:string,undefined:\"undefined\"},labelHighlightBold:{boolean:bool},level:{number:number,undefined:\"undefined\"},margin:{top:{number:number},right:{number:number},bottom:{number:number},left:{number:number},__type__:{object:object,number:number}},mass:{number:number},physics:{boolean:bool},scaling:{min:{number:number},max:{number:number},label:{enabled:{boolean:bool},min:{number:number},max:{number:number},maxVisible:{number:number},drawThreshold:{number:number},__type__:{object:object,boolean:bool}},customScalingFunction:{function:\"function\"},__type__:{object:object}},shadow:{enabled:{boolean:bool},color:{string:string},size:{number:number},x:{number:number},y:{number:number},__type__:{object:object,boolean:bool}},shape:{string:[\"ellipse\",\"circle\",\"database\",\"box\",\"text\",\"image\",\"circularImage\",\"diamond\",\"dot\",\"star\",\"triangle\",\"triangleDown\",\"square\",\"icon\",\"hexagon\"]},shapeProperties:{borderDashes:{boolean:bool,array:array},borderRadius:{number:number},interpolation:{boolean:bool},useImageSize:{boolean:bool},useBorderWithImage:{boolean:bool},__type__:{object:object}},size:{number:number},title:{string:string,dom:dom,undefined:\"undefined\"},value:{number:number,undefined:\"undefined\"},widthConstraint:{minimum:{number:number},maximum:{number:number},__type__:{object:object,boolean:bool,number:number}},x:{number:number},y:{number:number},__type__:{object:object}},physics:{enabled:{boolean:bool},barnesHut:{gravitationalConstant:{number:number},centralGravity:{number:number},springLength:{number:number},springConstant:{number:number},damping:{number:number},avoidOverlap:{number:number},__type__:{object:object}},forceAtlas2Based:{gravitationalConstant:{number:number},centralGravity:{number:number},springLength:{number:number},springConstant:{number:number},damping:{number:number},avoidOverlap:{number:number},__type__:{object:object}},repulsion:{centralGravity:{number:number},springLength:{number:number},springConstant:{number:number},nodeDistance:{number:number},damping:{number:number},__type__:{object:object}},hierarchicalRepulsion:{centralGravity:{number:number},springLength:{number:number},springConstant:{number:number},nodeDistance:{number:number},damping:{number:number},__type__:{object:object}},maxVelocity:{number:number},minVelocity:{number:number},solver:{string:[\"barnesHut\",\"repulsion\",\"hierarchicalRepulsion\",\"forceAtlas2Based\"]},stabilization:{enabled:{boolean:bool},iterations:{number:number},updateInterval:{number:number},onlyDynamicEdges:{boolean:bool},\nfit:{boolean:bool},__type__:{object:object,boolean:bool}},timestep:{number:number},adaptiveTimestep:{boolean:bool},__type__:{object:object,boolean:bool}},autoResize:{boolean:bool},clickToUse:{boolean:bool},locale:{string:string},locales:{__any__:{any:any},__type__:{object:object}},height:{string:string},width:{string:string},__type__:{object:object}};allOptions.groups.__any__=allOptions.nodes;allOptions.manipulation.controlNodeStyle=allOptions.nodes;var configureOptions={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:[\"color\",\"#2B7CE9\"],background:[\"color\",\"#97C2FC\"],highlight:{border:[\"color\",\"#2B7CE9\"],background:[\"color\",\"#D2E5FF\"]},hover:{border:[\"color\",\"#2B7CE9\"],background:[\"color\",\"#D2E5FF\"]}},fixed:{x:false,y:false},font:{color:[\"color\",\"#343434\"],size:[14,0,100,1],face:[\"arial\",\"verdana\",\"tahoma\"],background:[\"color\",\"none\"],strokeWidth:[0,0,50,1],strokeColor:[\"color\",\"#ffffff\"]},hidden:false,labelHighlightBold:true,physics:true,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:false,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:false,color:\"rgba(0,0,0,0.5)\",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:[\"ellipse\",\"box\",\"circle\",\"database\",\"diamond\",\"dot\",\"square\",\"star\",\"text\",\"triangle\",\"triangleDown\",\"hexagon\"],shapeProperties:{borderDashes:false,borderRadius:[6,0,20,1],interpolation:true,useImageSize:false},size:[25,0,200,1]},edges:{arrows:{to:{enabled:false,scaleFactor:[1,0,3,.05],type:\"arrow\"},middle:{enabled:false,scaleFactor:[1,0,3,.05],type:\"arrow\"},from:{enabled:false,scaleFactor:[1,0,3,.05],type:\"arrow\"}},arrowStrikethrough:true,color:{color:[\"color\",\"#848484\"],highlight:[\"color\",\"#848484\"],hover:[\"color\",\"#848484\"],inherit:[\"from\",\"to\",\"both\",true,false],opacity:[1,0,1,.05]},dashes:false,font:{color:[\"color\",\"#343434\"],size:[14,0,100,1],face:[\"arial\",\"verdana\",\"tahoma\"],background:[\"color\",\"none\"],strokeWidth:[2,0,50,1],strokeColor:[\"color\",\"#ffffff\"],align:[\"horizontal\",\"top\",\"middle\",\"bottom\"]},hidden:false,hoverWidth:[1.5,0,5,.1],labelHighlightBold:true,physics:true,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:true,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:false,color:\"rgba(0,0,0,0.5)\",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:true,type:[\"dynamic\",\"continuous\",\"discrete\",\"diagonalCross\",\"straightCross\",\"horizontal\",\"vertical\",\"curvedCW\",\"curvedCCW\",\"cubicBezier\"],forceDirection:[\"horizontal\",\"vertical\",\"none\"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:false,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:true,edgeMinimization:true,parentCentralization:true,direction:[\"UD\",\"DU\",\"LR\",\"RL\"],sortMethod:[\"hubsize\",\"directed\"]}},interaction:{dragNodes:true,dragView:true,hideEdgesOnDrag:false,hideNodesOnDrag:false,hover:false,keyboard:{enabled:false,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:true},multiselect:false,navigationButtons:false,selectable:true,selectConnectedEdges:true,hoverConnectedEdges:true,tooltipDelay:[300,0,1e3,25],zoomView:true},manipulation:{enabled:false,initiallyActive:false},physics:{enabled:true,barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:[\"barnesHut\",\"forceAtlas2Based\",\"repulsion\",\"hierarchicalRepulsion\"],timestep:[.5,.01,1,.01]}};exports.allOptions=allOptions;exports.configureOptions=configureOptions},function(module,exports,__webpack_require__){\"use strict\";var util=__webpack_require__(2);util.extend(exports,__webpack_require__(159));util.extend(exports,__webpack_require__(177));util.extend(exports,__webpack_require__(181))},function(module,exports,__webpack_require__){__webpack_require__(49);__webpack_require__(60);module.exports=__webpack_require__(136)},function(module,exports,__webpack_require__){\"use strict\";var addToUnscopables=__webpack_require__(126);var step=__webpack_require__(127);var Iterators=__webpack_require__(31);var toIObject=__webpack_require__(25);module.exports=__webpack_require__(79)(Array,\"Array\",function(iterated,kind){this._t=toIObject(iterated);this._i=0;this._k=kind},function(){var O=this._t;var kind=this._k;var index=this._i++;if(!O||index>=O.length){this._t=undefined;return step(1)}if(kind==\"keys\")return step(0,index);if(kind==\"values\")return step(0,O[index]);return step(0,[index,O[index]])},\"values\");Iterators.Arguments=Iterators.Array;addToUnscopables(\"keys\");addToUnscopables(\"values\");addToUnscopables(\"entries\")},function(module,exports){module.exports=function(){}},function(module,exports){module.exports=function(done,value){return{value:value,done:!!done}}},function(module,exports){module.exports=function(it){if(typeof it!=\"function\")throw TypeError(it+\" is not a function!\");return it}},function(module,exports,__webpack_require__){\"use strict\";var create=__webpack_require__(54);var descriptor=__webpack_require__(39);var setToStringTag=__webpack_require__(59);var IteratorPrototype={};__webpack_require__(26)(IteratorPrototype,__webpack_require__(13)(\"iterator\"),function(){return this});module.exports=function(Constructor,NAME,next){Constructor.prototype=create(IteratorPrototype,{next:descriptor(1,next)});setToStringTag(Constructor,NAME+\" Iterator\")}},function(module,exports,__webpack_require__){var dP=__webpack_require__(20);var anObject=__webpack_require__(27);var getKeys=__webpack_require__(33);module.exports=__webpack_require__(21)?Object.defineProperties:function defineProperties(O,Properties){anObject(O);var keys=getKeys(Properties);var length=keys.length;var i=0;var P;while(length>i)dP.f(O,P=keys[i++],Properties[P]);return O}},function(module,exports,__webpack_require__){var toIObject=__webpack_require__(25);var toLength=__webpack_require__(132);var toAbsoluteIndex=__webpack_require__(133);module.exports=function(IS_INCLUDES){return function($this,el,fromIndex){var O=toIObject($this);var length=toLength(O.length);var index=toAbsoluteIndex(fromIndex,length);var value;if(IS_INCLUDES&&el!=el)while(length>index){value=O[index++];if(value!=value)return true}else for(;length>index;index++)if(IS_INCLUDES||index in O){if(O[index]===el)return IS_INCLUDES||index||0}return!IS_INCLUDES&&-1}}},function(module,exports,__webpack_require__){var toInteger=__webpack_require__(55);var min=Math.min;module.exports=function(it){return it>0?min(toInteger(it),9007199254740991):0}},function(module,exports,__webpack_require__){var toInteger=__webpack_require__(55);var max=Math.max;var min=Math.min;module.exports=function(index,length){index=toInteger(index);return index<0?max(index+length,0):min(index,length)}},function(module,exports,__webpack_require__){var document=__webpack_require__(18).document;module.exports=document&&document.documentElement},function(module,exports,__webpack_require__){var toInteger=__webpack_require__(55);var defined=__webpack_require__(51);module.exports=function(TO_STRING){return function(that,pos){var s=String(defined(that));var i=toInteger(pos);var l=s.length;var a,b;if(i<0||i>=l)return TO_STRING?\"\":undefined;a=s.charCodeAt(i);return a<55296||a>56319||i+1===l||(b=s.charCodeAt(i+1))<56320||b>57343?TO_STRING?s.charAt(i):a:TO_STRING?s.slice(i,i+2):(a-55296<<10)+(b-56320)+65536}}},function(module,exports,__webpack_require__){var anObject=__webpack_require__(27);var get=__webpack_require__(137);module.exports=__webpack_require__(7).getIterator=function(it){var iterFn=get(it);if(typeof iterFn!=\"function\")throw TypeError(it+\" is not iterable!\");return anObject(iterFn.call(it))}},function(module,exports,__webpack_require__){var classof=__webpack_require__(86);var ITERATOR=__webpack_require__(13)(\"iterator\");var Iterators=__webpack_require__(31);module.exports=__webpack_require__(7).getIteratorMethod=function(it){if(it!=undefined)return it[ITERATOR]||it[\"@@iterator\"]||Iterators[classof(it)]}},function(module,exports,__webpack_require__){__webpack_require__(139);var $Object=__webpack_require__(7).Object;module.exports=function create(P,D){return $Object.create(P,D)}},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);$export($export.S,\"Object\",{create:__webpack_require__(54)})},function(module,exports,__webpack_require__){__webpack_require__(141);module.exports=__webpack_require__(7).Object.keys},function(module,exports,__webpack_require__){var toObject=__webpack_require__(41);var $keys=__webpack_require__(33);__webpack_require__(87)(\"keys\",function(){return function keys(it){return $keys(toObject(it))}})},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(143),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(60);__webpack_require__(49);module.exports=__webpack_require__(61).f(\"iterator\")},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(145),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(146);__webpack_require__(151);__webpack_require__(152);__webpack_require__(153);module.exports=__webpack_require__(7).Symbol},function(module,exports,__webpack_require__){\"use strict\";var global=__webpack_require__(18);var has=__webpack_require__(22);var DESCRIPTORS=__webpack_require__(21);var $export=__webpack_require__(17);var redefine=__webpack_require__(83);var META=__webpack_require__(147).KEY;var $fails=__webpack_require__(28);var shared=__webpack_require__(57);var setToStringTag=__webpack_require__(59);var uid=__webpack_require__(40);var wks=__webpack_require__(13);var wksExt=__webpack_require__(61);var wksDefine=__webpack_require__(62);var enumKeys=__webpack_require__(148);var isArray=__webpack_require__(149);var anObject=__webpack_require__(27);var toIObject=__webpack_require__(25);var toPrimitive=__webpack_require__(53);var createDesc=__webpack_require__(39);var _create=__webpack_require__(54);var gOPNExt=__webpack_require__(150);var $GOPD=__webpack_require__(89);var $DP=__webpack_require__(20);var $keys=__webpack_require__(33);var gOPD=$GOPD.f;var dP=$DP.f;var gOPN=gOPNExt.f;var $Symbol=global.Symbol;var $JSON=global.JSON;var _stringify=$JSON&&$JSON.stringify;var PROTOTYPE=\"prototype\";var HIDDEN=wks(\"_hidden\");var TO_PRIMITIVE=wks(\"toPrimitive\");var isEnum={}.propertyIsEnumerable;var SymbolRegistry=shared(\"symbol-registry\");var AllSymbols=shared(\"symbols\");var OPSymbols=shared(\"op-symbols\");var ObjectProto=Object[PROTOTYPE];var USE_NATIVE=typeof $Symbol==\"function\";var QObject=global.QObject;var setter=!QObject||!QObject[PROTOTYPE]||!QObject[PROTOTYPE].findChild;var setSymbolDesc=DESCRIPTORS&&$fails(function(){return _create(dP({},\"a\",{get:function(){return dP(this,\"a\",{value:7}).a}})).a!=7})?function(it,key,D){var protoDesc=gOPD(ObjectProto,key);if(protoDesc)delete ObjectProto[key];dP(it,key,D);if(protoDesc&&it!==ObjectProto)dP(ObjectProto,key,protoDesc)}:dP;var wrap=function(tag){var sym=AllSymbols[tag]=_create($Symbol[PROTOTYPE]);sym._k=tag;return sym};var isSymbol=USE_NATIVE&&typeof $Symbol.iterator==\"symbol\"?function(it){return typeof it==\"symbol\"}:function(it){return it instanceof $Symbol};var $defineProperty=function defineProperty(it,key,D){if(it===ObjectProto)$defineProperty(OPSymbols,key,D);anObject(it);key=toPrimitive(key,true);anObject(D);if(has(AllSymbols,key)){if(!D.enumerable){if(!has(it,HIDDEN))dP(it,HIDDEN,createDesc(1,{}));it[HIDDEN][key]=true}else{if(has(it,HIDDEN)&&it[HIDDEN][key])it[HIDDEN][key]=false;D=_create(D,{enumerable:createDesc(0,false)})}return setSymbolDesc(it,key,D)}return dP(it,key,D)};var $defineProperties=function defineProperties(it,P){anObject(it);var keys=enumKeys(P=toIObject(P));var i=0;var l=keys.length;var key;while(l>i)$defineProperty(it,key=keys[i++],P[key]);return it};var $create=function create(it,P){return P===undefined?_create(it):$defineProperties(_create(it),P)};var $propertyIsEnumerable=function propertyIsEnumerable(key){var E=isEnum.call(this,key=toPrimitive(key,true));if(this===ObjectProto&&has(AllSymbols,key)&&!has(OPSymbols,key))return false;return E||!has(this,key)||!has(AllSymbols,key)||has(this,HIDDEN)&&this[HIDDEN][key]?E:true};var $getOwnPropertyDescriptor=function getOwnPropertyDescriptor(it,key){it=toIObject(it);key=toPrimitive(key,true);if(it===ObjectProto&&has(AllSymbols,key)&&!has(OPSymbols,key))return;var D=gOPD(it,key);if(D&&has(AllSymbols,key)&&!(has(it,HIDDEN)&&it[HIDDEN][key]))D.enumerable=true;return D};var $getOwnPropertyNames=function getOwnPropertyNames(it){var names=gOPN(toIObject(it));var result=[];var i=0;var key;while(names.length>i){if(!has(AllSymbols,key=names[i++])&&key!=HIDDEN&&key!=META)result.push(key)}return result};var $getOwnPropertySymbols=function getOwnPropertySymbols(it){var IS_OP=it===ObjectProto;var names=gOPN(IS_OP?OPSymbols:toIObject(it));var result=[];var i=0;var key;while(names.length>i){if(has(AllSymbols,key=names[i++])&&(IS_OP?has(ObjectProto,key):true))result.push(AllSymbols[key])}return result};if(!USE_NATIVE){$Symbol=function Symbol(){if(this instanceof $Symbol)throw TypeError(\"Symbol is not a constructor!\");var tag=uid(arguments.length>0?arguments[0]:undefined);var $set=function(value){if(this===ObjectProto)$set.call(OPSymbols,value);if(has(this,HIDDEN)&&has(this[HIDDEN],tag))this[HIDDEN][tag]=false;setSymbolDesc(this,tag,createDesc(1,value))};if(DESCRIPTORS&&setter)setSymbolDesc(ObjectProto,tag,{configurable:true,set:$set});return wrap(tag)};redefine($Symbol[PROTOTYPE],\"toString\",function toString(){return this._k});$GOPD.f=$getOwnPropertyDescriptor;$DP.f=$defineProperty;__webpack_require__(88).f=gOPNExt.f=$getOwnPropertyNames;__webpack_require__(42).f=$propertyIsEnumerable;__webpack_require__(63).f=$getOwnPropertySymbols;if(DESCRIPTORS&&!__webpack_require__(52)){redefine(ObjectProto,\"propertyIsEnumerable\",$propertyIsEnumerable,true)}wksExt.f=function(name){return wrap(wks(name))}}$export($export.G+$export.W+$export.F*!USE_NATIVE,{Symbol:$Symbol});for(var es6Symbols=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),j=0;es6Symbols.length>j;)wks(es6Symbols[j++]);for(var wellKnownSymbols=$keys(wks.store),k=0;wellKnownSymbols.length>k;)wksDefine(wellKnownSymbols[k++]);$export($export.S+$export.F*!USE_NATIVE,\"Symbol\",{for:function(key){return has(SymbolRegistry,key+=\"\")?SymbolRegistry[key]:SymbolRegistry[key]=$Symbol(key)},keyFor:function keyFor(sym){if(!isSymbol(sym))throw TypeError(sym+\" is not a symbol!\");for(var key in SymbolRegistry)if(SymbolRegistry[key]===sym)return key},useSetter:function(){setter=true},useSimple:function(){setter=false}});$export($export.S+$export.F*!USE_NATIVE,\"Object\",{create:$create,defineProperty:$defineProperty,defineProperties:$defineProperties,getOwnPropertyDescriptor:$getOwnPropertyDescriptor,getOwnPropertyNames:$getOwnPropertyNames,getOwnPropertySymbols:$getOwnPropertySymbols});$JSON&&$export($export.S+$export.F*(!USE_NATIVE||$fails(function(){var S=$Symbol();return _stringify([S])!=\"[null]\"||_stringify({a:S})!=\"{}\"||_stringify(Object(S))!=\"{}\"})),\"JSON\",{stringify:function stringify(it){if(it===undefined||isSymbol(it))return;var args=[it];var i=1;var replacer,$replacer;while(arguments.length>i)args.push(arguments[i++]);replacer=args[1];if(typeof replacer==\"function\")$replacer=replacer;if($replacer||!isArray(replacer))replacer=function(key,value){if($replacer)value=$replacer.call(this,key,value);if(!isSymbol(value))return value};args[1]=replacer;return _stringify.apply($JSON,args)}});$Symbol[PROTOTYPE][TO_PRIMITIVE]||__webpack_require__(26)($Symbol[PROTOTYPE],TO_PRIMITIVE,$Symbol[PROTOTYPE].valueOf);setToStringTag($Symbol,\"Symbol\");setToStringTag(Math,\"Math\",true);setToStringTag(global.JSON,\"JSON\",true)},function(module,exports,__webpack_require__){var META=__webpack_require__(40)(\"meta\");var isObject=__webpack_require__(32);var has=__webpack_require__(22);var setDesc=__webpack_require__(20).f;var id=0;var isExtensible=Object.isExtensible||function(){return true};var FREEZE=!__webpack_require__(28)(function(){return isExtensible(Object.preventExtensions({}))});var setMeta=function(it){setDesc(it,META,{value:{i:\"O\"+ ++id,w:{}}})};var fastKey=function(it,create){if(!isObject(it))return typeof it==\"symbol\"?it:(typeof it==\"string\"?\"S\":\"P\")+it;if(!has(it,META)){if(!isExtensible(it))return\"F\";if(!create)return\"E\";setMeta(it)}return it[META].i};var getWeak=function(it,create){if(!has(it,META)){if(!isExtensible(it))return true;if(!create)return false;setMeta(it)}return it[META].w};var onFreeze=function(it){if(FREEZE&&meta.NEED&&isExtensible(it)&&!has(it,META))setMeta(it);return it};var meta=module.exports={KEY:META,NEED:false,fastKey:fastKey,getWeak:getWeak,onFreeze:onFreeze}},function(module,exports,__webpack_require__){var getKeys=__webpack_require__(33);var gOPS=__webpack_require__(63);var pIE=__webpack_require__(42);module.exports=function(it){var result=getKeys(it);var getSymbols=gOPS.f;if(getSymbols){var symbols=getSymbols(it);var isEnum=pIE.f;var i=0;var key;while(symbols.length>i)if(isEnum.call(it,key=symbols[i++]))result.push(key)}return result}},function(module,exports,__webpack_require__){var cof=__webpack_require__(50);module.exports=Array.isArray||function isArray(arg){return cof(arg)==\"Array\"}},function(module,exports,__webpack_require__){var toIObject=__webpack_require__(25);var gOPN=__webpack_require__(88).f;var toString={}.toString;var windowNames=typeof window==\"object\"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];var getWindowNames=function(it){try{return gOPN(it)}catch(e){return windowNames.slice()}};module.exports.f=function getOwnPropertyNames(it){return windowNames&&toString.call(it)==\"[object Window]\"?getWindowNames(it):gOPN(toIObject(it))}},function(module,exports){},function(module,exports,__webpack_require__){__webpack_require__(62)(\"asyncIterator\")},function(module,exports,__webpack_require__){__webpack_require__(62)(\"observable\")},function(module,exports,__webpack_require__){(function(module){var require;(function(global,factory){true?module.exports=factory():typeof define===\"function\"&&define.amd?define(factory):global.moment=factory()})(this,function(){\"use strict\";var hookCallback;function hooks(){return hookCallback.apply(null,arguments)}function setHookCallback(callback){hookCallback=callback}function isArray(input){return input instanceof Array||Object.prototype.toString.call(input)===\"[object Array]\"}function isObject(input){return input!=null&&Object.prototype.toString.call(input)===\"[object Object]\"}function isObjectEmpty(obj){if(Object.getOwnPropertyNames){return Object.getOwnPropertyNames(obj).length===0}else{var k;for(k in obj){if(obj.hasOwnProperty(k)){return false}}return true}}function isUndefined(input){return input===void 0}function isNumber(input){return typeof input===\"number\"||Object.prototype.toString.call(input)===\"[object Number]\"}function isDate(input){return input instanceof Date||Object.prototype.toString.call(input)===\"[object Date]\"}function map(arr,fn){var res=[],i;for(i=0;i<arr.length;++i){res.push(fn(arr[i],i))}return res}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function extend(a,b){for(var i in b){if(hasOwnProp(b,i)){a[i]=b[i]}}if(hasOwnProp(b,\"toString\")){a.toString=b.toString}if(hasOwnProp(b,\"valueOf\")){a.valueOf=b.valueOf}return a}function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,true).utc()}function defaultParsingFlags(){return{empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false,parsedDateParts:[],meridiem:null,rfc2822:false,weekdayMismatch:false}}function getParsingFlags(m){if(m._pf==null){m._pf=defaultParsingFlags()}return m._pf}var some;if(Array.prototype.some){some=Array.prototype.some}else{some=function(fun){var t=Object(this);var len=t.length>>>0;for(var i=0;i<len;i++){if(i in t&&fun.call(this,t[i],i,t)){return true}}return false}}function isValid(m){if(m._isValid==null){var flags=getParsingFlags(m);var parsedParts=some.call(flags.parsedDateParts,function(i){return i!=null});var isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.weekdayMismatch&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||flags.meridiem&&parsedParts);if(m._strict){isNowValid=isNowValid&&flags.charsLeftOver===0&&flags.unusedTokens.length===0&&flags.bigHour===undefined}if(Object.isFrozen==null||!Object.isFrozen(m)){m._isValid=isNowValid}else{return isNowValid}}return m._isValid}function createInvalid(flags){var m=createUTC(NaN);if(flags!=null){extend(getParsingFlags(m),flags)}else{getParsingFlags(m).userInvalidated=true}return m}var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(!isUndefined(from._isAMomentObject)){to._isAMomentObject=from._isAMomentObject}if(!isUndefined(from._i)){to._i=from._i}if(!isUndefined(from._f)){to._f=from._f}if(!isUndefined(from._l)){to._l=from._l}if(!isUndefined(from._strict)){to._strict=from._strict}if(!isUndefined(from._tzm)){to._tzm=from._tzm}if(!isUndefined(from._isUTC)){to._isUTC=from._isUTC}if(!isUndefined(from._offset)){to._offset=from._offset}if(!isUndefined(from._pf)){to._pf=getParsingFlags(from)}if(!isUndefined(from._locale)){to._locale=from._locale}if(momentProperties.length>0){for(i=0;i<momentProperties.length;i++){prop=momentProperties[i];val=from[prop];if(!isUndefined(val)){to[prop]=val}}}return to}var updateInProgress=false;function Moment(config){copyConfig(this,config);this._d=new Date(config._d!=null?config._d.getTime():NaN);if(!this.isValid()){this._d=new Date(NaN)}if(updateInProgress===false){updateInProgress=true;hooks.updateOffset(this);updateInProgress=false}}function isMoment(obj){return obj instanceof Moment||obj!=null&&obj._isAMomentObject!=null}function absFloor(number){if(number<0){return Math.ceil(number)||0}else{return Math.floor(number)}}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;if(coercedNumber!==0&&isFinite(coercedNumber)){value=absFloor(coercedNumber)}return value}function compareArrays(array1,array2,dontConvert){var len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0,i;for(i=0;i<len;i++){if(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i])){diffs++}}return diffs+lengthDiff}function warn(msg){if(hooks.suppressDeprecationWarnings===false&&typeof console!==\"undefined\"&&console.warn){console.warn(\"Deprecation warning: \"+msg)}}function deprecate(msg,fn){var firstTime=true;return extend(function(){if(hooks.deprecationHandler!=null){hooks.deprecationHandler(null,msg)}if(firstTime){var args=[];var arg;for(var i=0;i<arguments.length;i++){arg=\"\";if(typeof arguments[i]===\"object\"){arg+=\"\\n[\"+i+\"] \";for(var key in arguments[0]){arg+=key+\": \"+arguments[0][key]+\", \"}arg=arg.slice(0,-2)}else{arg=arguments[i]}args.push(arg)}warn(msg+\"\\nArguments: \"+Array.prototype.slice.call(args).join(\"\")+\"\\n\"+(new Error).stack);firstTime=false}return fn.apply(this,arguments)},fn)}var deprecations={};function deprecateSimple(name,msg){if(hooks.deprecationHandler!=null){hooks.deprecationHandler(name,msg)}if(!deprecations[name]){warn(msg);deprecations[name]=true}}hooks.suppressDeprecationWarnings=false;hooks.deprecationHandler=null;function isFunction(input){return input instanceof Function||Object.prototype.toString.call(input)===\"[object Function]\"}function set(config){var prop,i;for(i in config){prop=config[i];if(isFunction(prop)){this[i]=prop}else{this[\"_\"+i]=prop}}this._config=config;this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+\"|\"+/\\d{1,2}/.source)}function mergeConfigs(parentConfig,childConfig){var res=extend({},parentConfig),prop;for(prop in childConfig){if(hasOwnProp(childConfig,prop)){if(isObject(parentConfig[prop])&&isObject(childConfig[prop])){res[prop]={};extend(res[prop],parentConfig[prop]);extend(res[prop],childConfig[prop])}else if(childConfig[prop]!=null){res[prop]=childConfig[prop]}else{delete res[prop]}}}for(prop in parentConfig){if(hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])){res[prop]=extend({},res[prop])}}return res}function Locale(config){if(config!=null){this.set(config)}}var keys;if(Object.keys){keys=Object.keys}else{keys=function(obj){var i,res=[];for(i in obj){if(hasOwnProp(obj,i)){res.push(i)}}return res}}var defaultCalendar={sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"};function calendar(key,mom,now){var output=this._calendar[key]||this._calendar[\"sameElse\"];return isFunction(output)?output.call(mom,now):output}var defaultLongDateFormat={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};function longDateFormat(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];if(format||!formatUpper){return format}this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)});return this._longDateFormat[key]}var defaultInvalidDate=\"Invalid date\";function invalidDate(){return this._invalidDate}var defaultOrdinal=\"%d\";var defaultDayOfMonthOrdinalParse=/\\d{1,2}/;function ordinal(number){return this._ordinal.replace(\"%d\",number)}var defaultRelativeTime={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function relativeTime(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return isFunction(output)?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)}function pastFuture(diff,output){var format=this._relativeTime[diff>0?\"future\":\"past\"];return isFunction(format)?format(output):format.replace(/%s/i,output)}var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+\"s\"]=aliases[shorthand]=unit}function normalizeUnits(units){return typeof units===\"string\"?aliases[units]||aliases[units.toLowerCase()]:undefined}function normalizeObjectUnits(inputObject){var normalizedInput={},normalizedProp,prop;for(prop in inputObject){if(hasOwnProp(inputObject,prop)){normalizedProp=normalizeUnits(prop);if(normalizedProp){normalizedInput[normalizedProp]=inputObject[prop]}}}return normalizedInput}var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority}function getPrioritizedUnits(unitsObj){var units=[];for(var u in unitsObj){units.push({unit:u,priority:priorities[u]})}units.sort(function(a,b){return a.priority-b.priority});return units}function zeroFill(number,targetLength,forceSign){var absNumber=\"\"+Math.abs(number),zerosToFill=targetLength-absNumber.length,sign=number>=0;return(sign?forceSign?\"+\":\"\":\"-\")+Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber}var formattingTokens=/(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;var localFormattingTokens=/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;var formatFunctions={};var formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;if(typeof callback===\"string\"){func=function(){return this[callback]()}}if(token){formatTokenFunctions[token]=func}if(padded){formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2])}}if(ordinal){formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token)}}}function removeFormattingTokens(input){if(input.match(/\\[[\\s\\S]/)){return input.replace(/^\\[|\\]$/g,\"\")}return input.replace(/\\\\/g,\"\")}function makeFormatFunction(format){var array=format.match(formattingTokens),i,length;for(i=0,length=array.length;i<length;i++){if(formatTokenFunctions[array[i]]){array[i]=formatTokenFunctions[array[i]]}else{array[i]=removeFormattingTokens(array[i])}}return function(mom){var output=\"\",i;for(i=0;i<length;i++){output+=isFunction(array[i])?array[i].call(mom,format):array[i]}return output}}function formatMoment(m,format){if(!m.isValid()){return m.localeData().invalidDate()}format=expandFormat(format,m.localeData());formatFunctions[format]=formatFunctions[format]||makeFormatFunction(format);return formatFunctions[format](m)}function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input}localFormattingTokens.lastIndex=0;while(i>=0&&localFormattingTokens.test(format)){format=format.replace(localFormattingTokens,replaceLongDateFormatTokens);localFormattingTokens.lastIndex=0;i-=1}return format}var match1=/\\d/;var match2=/\\d\\d/;var match3=/\\d{3}/;var match4=/\\d{4}/;var match6=/[+-]?\\d{6}/;var match1to2=/\\d\\d?/;var match3to4=/\\d\\d\\d\\d?/;var match5to6=/\\d\\d\\d\\d\\d\\d?/;var match1to3=/\\d{1,3}/;var match1to4=/\\d{1,4}/;var match1to6=/[+-]?\\d{1,6}/;var matchUnsigned=/\\d+/;var matchSigned=/[+-]?\\d+/;var matchOffset=/Z|[+-]\\d\\d:?\\d\\d/gi;var matchShortOffset=/Z|[+-]\\d\\d(?::?\\d\\d)?/gi;var matchTimestamp=/[+-]?\\d+(\\.\\d{1,3})?/;var matchWord=/[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;var regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){if(!hasOwnProp(regexes,token)){return new RegExp(unescapeFormat(token))}return regexes[token](config._strict,config._locale)}function unescapeFormat(s){return regexEscape(s.replace(\"\\\\\",\"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4}))}function regexEscape(s){return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")}var tokens={};function addParseToken(token,callback){var i,func=callback;if(typeof token===\"string\"){token=[token]}if(isNumber(callback)){func=function(input,array){array[callback]=toInt(input)}}for(i=0;i<token.length;i++){tokens[token[i]]=func}}function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{};callback(input,config._w,config,token)})}function addTimeToArrayFromToken(token,input,config){if(input!=null&&hasOwnProp(tokens,token)){tokens[token](input,config._a,config,token)}}var YEAR=0;var MONTH=1;var DATE=2;var HOUR=3;var MINUTE=4;var SECOND=5;var MILLISECOND=6;var WEEK=7;var WEEKDAY=8;addFormatToken(\"Y\",0,0,function(){var y=this.year();return y<=9999?\"\"+y:\"+\"+y});addFormatToken(0,[\"YY\",2],0,function(){return this.year()%100});addFormatToken(0,[\"YYYY\",4],0,\"year\");addFormatToken(0,[\"YYYYY\",5],0,\"year\");addFormatToken(0,[\"YYYYYY\",6,true],0,\"year\");addUnitAlias(\"year\",\"y\");addUnitPriority(\"year\",1);addRegexToken(\"Y\",matchSigned)\n;addRegexToken(\"YY\",match1to2,match2);addRegexToken(\"YYYY\",match1to4,match4);addRegexToken(\"YYYYY\",match1to6,match6);addRegexToken(\"YYYYYY\",match1to6,match6);addParseToken([\"YYYYY\",\"YYYYYY\"],YEAR);addParseToken(\"YYYY\",function(input,array){array[YEAR]=input.length===2?hooks.parseTwoDigitYear(input):toInt(input)});addParseToken(\"YY\",function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input)});addParseToken(\"Y\",function(input,array){array[YEAR]=parseInt(input,10)});function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4===0&&year%100!==0||year%400===0}hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};var getSetYear=makeGetSet(\"FullYear\",true);function getIsLeapYear(){return isLeapYear(this.year())}function makeGetSet(unit,keepTime){return function(value){if(value!=null){set$1(this,unit,value);hooks.updateOffset(this,keepTime);return this}else{return get(this,unit)}}}function get(mom,unit){return mom.isValid()?mom._d[\"get\"+(mom._isUTC?\"UTC\":\"\")+unit]():NaN}function set$1(mom,unit,value){if(mom.isValid()&&!isNaN(value)){if(unit===\"FullYear\"&&isLeapYear(mom.year())){mom._d[\"set\"+(mom._isUTC?\"UTC\":\"\")+unit](value,mom.month(),daysInMonth(value,mom.month()))}else{mom._d[\"set\"+(mom._isUTC?\"UTC\":\"\")+unit](value)}}}function stringGet(units){units=normalizeUnits(units);if(isFunction(this[units])){return this[units]()}return this}function stringSet(units,value){if(typeof units===\"object\"){units=normalizeObjectUnits(units);var prioritized=getPrioritizedUnits(units);for(var i=0;i<prioritized.length;i++){this[prioritized[i].unit](units[prioritized[i].unit])}}else{units=normalizeUnits(units);if(isFunction(this[units])){return this[units](value)}}return this}function mod(n,x){return(n%x+x)%x}var indexOf;if(Array.prototype.indexOf){indexOf=Array.prototype.indexOf}else{indexOf=function(o){var i;for(i=0;i<this.length;++i){if(this[i]===o){return i}}return-1}}function daysInMonth(year,month){if(isNaN(year)||isNaN(month)){return NaN}var modMonth=mod(month,12);year+=(month-modMonth)/12;return modMonth===1?isLeapYear(year)?29:28:31-modMonth%7%2}addFormatToken(\"M\",[\"MM\",2],\"Mo\",function(){return this.month()+1});addFormatToken(\"MMM\",0,0,function(format){return this.localeData().monthsShort(this,format)});addFormatToken(\"MMMM\",0,0,function(format){return this.localeData().months(this,format)});addUnitAlias(\"month\",\"M\");addUnitPriority(\"month\",8);addRegexToken(\"M\",match1to2);addRegexToken(\"MM\",match1to2,match2);addRegexToken(\"MMM\",function(isStrict,locale){return locale.monthsShortRegex(isStrict)});addRegexToken(\"MMMM\",function(isStrict,locale){return locale.monthsRegex(isStrict)});addParseToken([\"M\",\"MM\"],function(input,array){array[MONTH]=toInt(input)-1});addParseToken([\"MMM\",\"MMMM\"],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);if(month!=null){array[MONTH]=month}else{getParsingFlags(config).invalidMonth=input}});var MONTHS_IN_FORMAT=/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;var defaultLocaleMonths=\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\");function localeMonths(m,format){if(!m){return isArray(this._months)?this._months:this._months[\"standalone\"]}return isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?\"format\":\"standalone\"][m.month()]}var defaultLocaleMonthsShort=\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\");function localeMonthsShort(m,format){if(!m){return isArray(this._monthsShort)?this._monthsShort:this._monthsShort[\"standalone\"]}return isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?\"format\":\"standalone\"][m.month()]}function handleStrictParse(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[];for(i=0;i<12;++i){mom=createUTC([2e3,i]);this._shortMonthsParse[i]=this.monthsShort(mom,\"\").toLocaleLowerCase();this._longMonthsParse[i]=this.months(mom,\"\").toLocaleLowerCase()}}if(strict){if(format===\"MMM\"){ii=indexOf.call(this._shortMonthsParse,llc);return ii!==-1?ii:null}else{ii=indexOf.call(this._longMonthsParse,llc);return ii!==-1?ii:null}}else{if(format===\"MMM\"){ii=indexOf.call(this._shortMonthsParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._longMonthsParse,llc);return ii!==-1?ii:null}else{ii=indexOf.call(this._longMonthsParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._shortMonthsParse,llc);return ii!==-1?ii:null}}}function localeMonthsParse(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact){return handleStrictParse.call(this,monthName,format,strict)}if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[]}for(i=0;i<12;i++){mom=createUTC([2e3,i]);if(strict&&!this._longMonthsParse[i]){this._longMonthsParse[i]=new RegExp(\"^\"+this.months(mom,\"\").replace(\".\",\"\")+\"$\",\"i\");this._shortMonthsParse[i]=new RegExp(\"^\"+this.monthsShort(mom,\"\").replace(\".\",\"\")+\"$\",\"i\")}if(!strict&&!this._monthsParse[i]){regex=\"^\"+this.months(mom,\"\")+\"|^\"+this.monthsShort(mom,\"\");this._monthsParse[i]=new RegExp(regex.replace(\".\",\"\"),\"i\")}if(strict&&format===\"MMMM\"&&this._longMonthsParse[i].test(monthName)){return i}else if(strict&&format===\"MMM\"&&this._shortMonthsParse[i].test(monthName)){return i}else if(!strict&&this._monthsParse[i].test(monthName)){return i}}}function setMonth(mom,value){var dayOfMonth;if(!mom.isValid()){return mom}if(typeof value===\"string\"){if(/^\\d+$/.test(value)){value=toInt(value)}else{value=mom.localeData().monthsParse(value);if(!isNumber(value)){return mom}}}dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value));mom._d[\"set\"+(mom._isUTC?\"UTC\":\"\")+\"Month\"](value,dayOfMonth);return mom}function getSetMonth(value){if(value!=null){setMonth(this,value);hooks.updateOffset(this,true);return this}else{return get(this,\"Month\")}}function getDaysInMonth(){return daysInMonth(this.year(),this.month())}var defaultMonthsShortRegex=matchWord;function monthsShortRegex(isStrict){if(this._monthsParseExact){if(!hasOwnProp(this,\"_monthsRegex\")){computeMonthsParse.call(this)}if(isStrict){return this._monthsShortStrictRegex}else{return this._monthsShortRegex}}else{if(!hasOwnProp(this,\"_monthsShortRegex\")){this._monthsShortRegex=defaultMonthsShortRegex}return this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex}}var defaultMonthsRegex=matchWord;function monthsRegex(isStrict){if(this._monthsParseExact){if(!hasOwnProp(this,\"_monthsRegex\")){computeMonthsParse.call(this)}if(isStrict){return this._monthsStrictRegex}else{return this._monthsRegex}}else{if(!hasOwnProp(this,\"_monthsRegex\")){this._monthsRegex=defaultMonthsRegex}return this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex}}function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length}var shortPieces=[],longPieces=[],mixedPieces=[],i,mom;for(i=0;i<12;i++){mom=createUTC([2e3,i]);shortPieces.push(this.monthsShort(mom,\"\"));longPieces.push(this.months(mom,\"\"));mixedPieces.push(this.months(mom,\"\"));mixedPieces.push(this.monthsShort(mom,\"\"))}shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);for(i=0;i<12;i++){shortPieces[i]=regexEscape(shortPieces[i]);longPieces[i]=regexEscape(longPieces[i])}for(i=0;i<24;i++){mixedPieces[i]=regexEscape(mixedPieces[i])}this._monthsRegex=new RegExp(\"^(\"+mixedPieces.join(\"|\")+\")\",\"i\");this._monthsShortRegex=this._monthsRegex;this._monthsStrictRegex=new RegExp(\"^(\"+longPieces.join(\"|\")+\")\",\"i\");this._monthsShortStrictRegex=new RegExp(\"^(\"+shortPieces.join(\"|\")+\")\",\"i\")}function createDate(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);if(y<100&&y>=0&&isFinite(date.getFullYear())){date.setFullYear(y)}return date}function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));if(y<100&&y>=0&&isFinite(date.getUTCFullYear())){date.setUTCFullYear(y)}return date}function firstWeekOffset(year,dow,doy){var fwd=7+dow-doy,fwdlw=(7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7;return-fwdlw+fwd-1}function dayOfYearFromWeeks(year,week,weekday,dow,doy){var localWeekday=(7+weekday-dow)%7,weekOffset=firstWeekOffset(year,dow,doy),dayOfYear=1+7*(week-1)+localWeekday+weekOffset,resYear,resDayOfYear;if(dayOfYear<=0){resYear=year-1;resDayOfYear=daysInYear(resYear)+dayOfYear}else if(dayOfYear>daysInYear(year)){resYear=year+1;resDayOfYear=dayOfYear-daysInYear(year)}else{resYear=year;resDayOfYear=dayOfYear}return{year:resYear,dayOfYear:resDayOfYear}}function weekOfYear(mom,dow,doy){var weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1,resWeek,resYear;if(week<1){resYear=mom.year()-1;resWeek=week+weeksInYear(resYear,dow,doy)}else if(week>weeksInYear(mom.year(),dow,doy)){resWeek=week-weeksInYear(mom.year(),dow,doy);resYear=mom.year()+1}else{resYear=mom.year();resWeek=week}return{week:resWeek,year:resYear}}function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7}addFormatToken(\"w\",[\"ww\",2],\"wo\",\"week\");addFormatToken(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\");addUnitAlias(\"week\",\"w\");addUnitAlias(\"isoWeek\",\"W\");addUnitPriority(\"week\",5);addUnitPriority(\"isoWeek\",5);addRegexToken(\"w\",match1to2);addRegexToken(\"ww\",match1to2,match2);addRegexToken(\"W\",match1to2);addRegexToken(\"WW\",match1to2,match2);addWeekParseToken([\"w\",\"ww\",\"W\",\"WW\"],function(input,week,config,token){week[token.substr(0,1)]=toInt(input)});function localeWeek(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week}var defaultLocaleWeek={dow:0,doy:6};function localeFirstDayOfWeek(){return this._week.dow}function localeFirstDayOfYear(){return this._week.doy}function getSetWeek(input){var week=this.localeData().week(this);return input==null?week:this.add((input-week)*7,\"d\")}function getSetISOWeek(input){var week=weekOfYear(this,1,4).week;return input==null?week:this.add((input-week)*7,\"d\")}addFormatToken(\"d\",0,\"do\",\"day\");addFormatToken(\"dd\",0,0,function(format){return this.localeData().weekdaysMin(this,format)});addFormatToken(\"ddd\",0,0,function(format){return this.localeData().weekdaysShort(this,format)});addFormatToken(\"dddd\",0,0,function(format){return this.localeData().weekdays(this,format)});addFormatToken(\"e\",0,0,\"weekday\");addFormatToken(\"E\",0,0,\"isoWeekday\");addUnitAlias(\"day\",\"d\");addUnitAlias(\"weekday\",\"e\");addUnitAlias(\"isoWeekday\",\"E\");addUnitPriority(\"day\",11);addUnitPriority(\"weekday\",11);addUnitPriority(\"isoWeekday\",11);addRegexToken(\"d\",match1to2);addRegexToken(\"e\",match1to2);addRegexToken(\"E\",match1to2);addRegexToken(\"dd\",function(isStrict,locale){return locale.weekdaysMinRegex(isStrict)});addRegexToken(\"ddd\",function(isStrict,locale){return locale.weekdaysShortRegex(isStrict)});addRegexToken(\"dddd\",function(isStrict,locale){return locale.weekdaysRegex(isStrict)});addWeekParseToken([\"dd\",\"ddd\",\"dddd\"],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);if(weekday!=null){week.d=weekday}else{getParsingFlags(config).invalidWeekday=input}});addWeekParseToken([\"d\",\"e\",\"E\"],function(input,week,config,token){week[token]=toInt(input)});function parseWeekday(input,locale){if(typeof input!==\"string\"){return input}if(!isNaN(input)){return parseInt(input,10)}input=locale.weekdaysParse(input);if(typeof input===\"number\"){return input}return null}function parseIsoWeekday(input,locale){if(typeof input===\"string\"){return locale.weekdaysParse(input)%7||7}return isNaN(input)?null:input}var defaultLocaleWeekdays=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\");function localeWeekdays(m,format){if(!m){return isArray(this._weekdays)?this._weekdays:this._weekdays[\"standalone\"]}return isArray(this._weekdays)?this._weekdays[m.day()]:this._weekdays[this._weekdays.isFormat.test(format)?\"format\":\"standalone\"][m.day()]}var defaultLocaleWeekdaysShort=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\");function localeWeekdaysShort(m){return m?this._weekdaysShort[m.day()]:this._weekdaysShort}var defaultLocaleWeekdaysMin=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\");function localeWeekdaysMin(m){return m?this._weekdaysMin[m.day()]:this._weekdaysMin}function handleStrictParse$1(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(i=0;i<7;++i){mom=createUTC([2e3,1]).day(i);this._minWeekdaysParse[i]=this.weekdaysMin(mom,\"\").toLocaleLowerCase();this._shortWeekdaysParse[i]=this.weekdaysShort(mom,\"\").toLocaleLowerCase();this._weekdaysParse[i]=this.weekdays(mom,\"\").toLocaleLowerCase()}}if(strict){if(format===\"dddd\"){ii=indexOf.call(this._weekdaysParse,llc);return ii!==-1?ii:null}else if(format===\"ddd\"){ii=indexOf.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null}else{ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null}}else{if(format===\"dddd\"){ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null}else if(format===\"ddd\"){ii=indexOf.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null}else{ii=indexOf.call(this._minWeekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null}}}function localeWeekdaysParse(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact){return handleStrictParse$1.call(this,weekdayName,format,strict)}if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[]}for(i=0;i<7;i++){mom=createUTC([2e3,1]).day(i);if(strict&&!this._fullWeekdaysParse[i]){this._fullWeekdaysParse[i]=new RegExp(\"^\"+this.weekdays(mom,\"\").replace(\".\",\".?\")+\"$\",\"i\");this._shortWeekdaysParse[i]=new RegExp(\"^\"+this.weekdaysShort(mom,\"\").replace(\".\",\".?\")+\"$\",\"i\");this._minWeekdaysParse[i]=new RegExp(\"^\"+this.weekdaysMin(mom,\"\").replace(\".\",\".?\")+\"$\",\"i\")}if(!this._weekdaysParse[i]){regex=\"^\"+this.weekdays(mom,\"\")+\"|^\"+this.weekdaysShort(mom,\"\")+\"|^\"+this.weekdaysMin(mom,\"\");this._weekdaysParse[i]=new RegExp(regex.replace(\".\",\"\"),\"i\")}if(strict&&format===\"dddd\"&&this._fullWeekdaysParse[i].test(weekdayName)){return i}else if(strict&&format===\"ddd\"&&this._shortWeekdaysParse[i].test(weekdayName)){return i}else if(strict&&format===\"dd\"&&this._minWeekdaysParse[i].test(weekdayName)){return i}else if(!strict&&this._weekdaysParse[i].test(weekdayName)){return i}}}function getSetDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN}var day=this._isUTC?this._d.getUTCDay():this._d.getDay();if(input!=null){input=parseWeekday(input,this.localeData());return this.add(input-day,\"d\")}else{return day}}function getSetLocaleDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN}var weekday=(this.day()+7-this.localeData()._week.dow)%7;return input==null?weekday:this.add(input-weekday,\"d\")}function getSetISODayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN}if(input!=null){var weekday=parseIsoWeekday(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7)}else{return this.day()||7}}var defaultWeekdaysRegex=matchWord;function weekdaysRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,\"_weekdaysRegex\")){computeWeekdaysParse.call(this)}if(isStrict){return this._weekdaysStrictRegex}else{return this._weekdaysRegex}}else{if(!hasOwnProp(this,\"_weekdaysRegex\")){this._weekdaysRegex=defaultWeekdaysRegex}return this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex}}var defaultWeekdaysShortRegex=matchWord;function weekdaysShortRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,\"_weekdaysRegex\")){computeWeekdaysParse.call(this)}if(isStrict){return this._weekdaysShortStrictRegex}else{return this._weekdaysShortRegex}}else{if(!hasOwnProp(this,\"_weekdaysShortRegex\")){this._weekdaysShortRegex=defaultWeekdaysShortRegex}return this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}var defaultWeekdaysMinRegex=matchWord;function weekdaysMinRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,\"_weekdaysRegex\")){computeWeekdaysParse.call(this)}if(isStrict){return this._weekdaysMinStrictRegex}else{return this._weekdaysMinRegex}}else{if(!hasOwnProp(this,\"_weekdaysMinRegex\")){this._weekdaysMinRegex=defaultWeekdaysMinRegex}return this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length}var minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[],i,mom,minp,shortp,longp;for(i=0;i<7;i++){mom=createUTC([2e3,1]).day(i);minp=this.weekdaysMin(mom,\"\");shortp=this.weekdaysShort(mom,\"\");longp=this.weekdays(mom,\"\");minPieces.push(minp);shortPieces.push(shortp);longPieces.push(longp);mixedPieces.push(minp);mixedPieces.push(shortp);mixedPieces.push(longp)}minPieces.sort(cmpLenRev);shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);for(i=0;i<7;i++){shortPieces[i]=regexEscape(shortPieces[i]);longPieces[i]=regexEscape(longPieces[i]);mixedPieces[i]=regexEscape(mixedPieces[i])}this._weekdaysRegex=new RegExp(\"^(\"+mixedPieces.join(\"|\")+\")\",\"i\");this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp(\"^(\"+longPieces.join(\"|\")+\")\",\"i\");this._weekdaysShortStrictRegex=new RegExp(\"^(\"+shortPieces.join(\"|\")+\")\",\"i\");this._weekdaysMinStrictRegex=new RegExp(\"^(\"+minPieces.join(\"|\")+\")\",\"i\")}function hFormat(){return this.hours()%12||12}function kFormat(){return this.hours()||24}addFormatToken(\"H\",[\"HH\",2],0,\"hour\");addFormatToken(\"h\",[\"hh\",2],0,hFormat);addFormatToken(\"k\",[\"kk\",2],0,kFormat);addFormatToken(\"hmm\",0,0,function(){return\"\"+hFormat.apply(this)+zeroFill(this.minutes(),2)});addFormatToken(\"hmmss\",0,0,function(){return\"\"+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)});addFormatToken(\"Hmm\",0,0,function(){return\"\"+this.hours()+zeroFill(this.minutes(),2)});addFormatToken(\"Hmmss\",0,0,function(){return\"\"+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)});function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase)})}meridiem(\"a\",true);meridiem(\"A\",false);addUnitAlias(\"hour\",\"h\");addUnitPriority(\"hour\",13);function matchMeridiem(isStrict,locale){return locale._meridiemParse}addRegexToken(\"a\",matchMeridiem);addRegexToken(\"A\",matchMeridiem);addRegexToken(\"H\",match1to2);addRegexToken(\"h\",match1to2);addRegexToken(\"k\",match1to2);addRegexToken(\"HH\",match1to2,match2);addRegexToken(\"hh\",match1to2,match2);addRegexToken(\"kk\",match1to2,match2);addRegexToken(\"hmm\",match3to4);addRegexToken(\"hmmss\",match5to6);addRegexToken(\"Hmm\",match3to4);addRegexToken(\"Hmmss\",match5to6);addParseToken([\"H\",\"HH\"],HOUR);addParseToken([\"k\",\"kk\"],function(input,array,config){var kInput=toInt(input);array[HOUR]=kInput===24?0:kInput});addParseToken([\"a\",\"A\"],function(input,array,config){config._isPm=config._locale.isPM(input);config._meridiem=input});addParseToken([\"h\",\"hh\"],function(input,array,config){array[HOUR]=toInt(input);getParsingFlags(config).bigHour=true});addParseToken(\"hmm\",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos));getParsingFlags(config).bigHour=true});addParseToken(\"hmmss\",function(input,array,config){var pos1=input.length-4;var pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2));getParsingFlags(config).bigHour=true});addParseToken(\"Hmm\",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos))});addParseToken(\"Hmmss\",function(input,array,config){var pos1=input.length-4;var pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2))});function localeIsPM(input){return(input+\"\").toLowerCase().charAt(0)===\"p\"}var defaultLocaleMeridiemParse=/[ap]\\.?m?\\.?/i;function localeMeridiem(hours,minutes,isLower){if(hours>11){return isLower?\"pm\":\"PM\"}else{return isLower?\"am\":\"AM\"}}var getSetHour=makeGetSet(\"Hours\",true);var baseConfig={calendar:defaultCalendar,longDateFormat:defaultLongDateFormat,invalidDate:defaultInvalidDate,ordinal:defaultOrdinal,dayOfMonthOrdinalParse:defaultDayOfMonthOrdinalParse,relativeTime:defaultRelativeTime,months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:defaultLocaleWeek,weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:defaultLocaleMeridiemParse};var locales={};var localeFamilies={};var globalLocale;function normalizeLocale(key){return key?key.toLowerCase().replace(\"_\",\"-\"):key}function chooseLocale(names){var i=0,j,next,locale,split;while(i<names.length){split=normalizeLocale(names[i]).split(\"-\");j=split.length;next=normalizeLocale(names[i+1]);next=next?next.split(\"-\"):null;while(j>0){locale=loadLocale(split.slice(0,j).join(\"-\"));if(locale){return locale}if(next&&next.length>=j&&compareArrays(split,next,true)>=j-1){break}j--}i++}return null}function loadLocale(name){var oldLocale=null;if(!locales[name]&&typeof module!==\"undefined\"&&module&&module.exports){try{oldLocale=globalLocale._abbr;var aliasedRequire=require;!function webpackMissingModule(){var e=new Error('Cannot find module \"./locale\"');e.code=\"MODULE_NOT_FOUND\";throw e}();getSetGlobalLocale(oldLocale)}catch(e){}}return locales[name]}function getSetGlobalLocale(key,values){var data;if(key){if(isUndefined(values)){data=getLocale(key)}else{data=defineLocale(key,values)}if(data){globalLocale=data}}return globalLocale._abbr}function defineLocale(name,config){if(config!==null){var parentConfig=baseConfig;config.abbr=name;if(locales[name]!=null){deprecateSimple(\"defineLocaleOverride\",\"use moment.updateLocale(localeName, config) to change \"+\"an existing locale. moment.defineLocale(localeName, \"+\"config) should only be used for creating a new locale \"+\"See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\");parentConfig=locales[name]._config}else if(config.parentLocale!=null){if(locales[config.parentLocale]!=null){parentConfig=locales[config.parentLocale]._config}else{if(!localeFamilies[config.parentLocale]){localeFamilies[config.parentLocale]=[]}localeFamilies[config.parentLocale].push({name:name,config:config});return null}}locales[name]=new Locale(mergeConfigs(parentConfig,config));if(localeFamilies[name]){localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config)})}getSetGlobalLocale(name);return locales[name]}else{delete locales[name];return null}}function updateLocale(name,config){if(config!=null){var locale,parentConfig=baseConfig;if(locales[name]!=null){parentConfig=locales[name]._config}config=mergeConfigs(parentConfig,config);locale=new Locale(config);locale.parentLocale=locales[name];locales[name]=locale;getSetGlobalLocale(name)}else{if(locales[name]!=null){if(locales[name].parentLocale!=null){locales[name]=locales[name].parentLocale}else if(locales[name]!=null){delete locales[name]}}}return locales[name]}function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr){key=key._locale._abbr}if(!key){return globalLocale}if(!isArray(key)){locale=loadLocale(key);if(locale){return locale}key=[key]}return chooseLocale(key)}function listLocales(){return keys(locales)}function checkOverflow(m){var overflow;var a=m._a;if(a&&getParsingFlags(m).overflow===-2){overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||a[HOUR]===24&&(a[MINUTE]!==0||a[SECOND]!==0||a[MILLISECOND]!==0)?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1;if(getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)){overflow=DATE}if(getParsingFlags(m)._overflowWeeks&&overflow===-1){overflow=WEEK}if(getParsingFlags(m)._overflowWeekday&&overflow===-1){overflow=WEEKDAY}getParsingFlags(m).overflow=overflow}return m}function defaults(a,b,c){if(a!=null){return a}if(b!=null){return b}return c}function currentDateArray(config){var nowValue=new Date(hooks.now());if(config._useUTC){return[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()]}return[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()]}function configFromArray(config){var i,date,input=[],currentDate,yearToUse;if(config._d){return}currentDate=currentDateArray(config);if(config._w&&config._a[DATE]==null&&config._a[MONTH]==null){dayOfYearFromWeekInfo(config)}if(config._dayOfYear!=null){yearToUse=defaults(config._a[YEAR],currentDate[YEAR]);if(config._dayOfYear>daysInYear(yearToUse)||config._dayOfYear===0){getParsingFlags(config)._overflowDayOfYear=true}date=createUTCDate(yearToUse,0,config._dayOfYear);config._a[MONTH]=date.getUTCMonth();config._a[DATE]=date.getUTCDate()}for(i=0;i<3&&config._a[i]==null;++i){config._a[i]=input[i]=currentDate[i]}for(;i<7;i++){config._a[i]=input[i]=config._a[i]==null?i===2?1:0:config._a[i]}if(config._a[HOUR]===24&&config._a[MINUTE]===0&&config._a[SECOND]===0&&config._a[MILLISECOND]===0){config._nextDay=true;config._a[HOUR]=0}config._d=(config._useUTC?createUTCDate:createDate).apply(null,input);if(config._tzm!=null){config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm)}if(config._nextDay){config._a[HOUR]=24}if(config._w&&typeof config._w.d!==\"undefined\"&&config._w.d!==config._d.getDay()){getParsingFlags(config).weekdayMismatch=true}}function dayOfYearFromWeekInfo(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;w=config._w;if(w.GG!=null||w.W!=null||w.E!=null){dow=1;doy=4;weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year);week=defaults(w.W,1);weekday=defaults(w.E,1);if(weekday<1||weekday>7){weekdayOverflow=true}}else{dow=config._locale._week.dow;doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year);week=defaults(w.w,curWeek.week);if(w.d!=null){weekday=w.d;if(weekday<0||weekday>6){weekdayOverflow=true}}else if(w.e!=null){weekday=w.e+dow;if(w.e<0||w.e>6){weekdayOverflow=true}}else{weekday=dow}}if(week<1||week>weeksInYear(weekYear,dow,doy)){getParsingFlags(config)._overflowWeeks=true}else if(weekdayOverflow!=null){getParsingFlags(config)._overflowWeekday=true}else{temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy);config._a[YEAR]=temp.year;config._dayOfYear=temp.dayOfYear}}var extendedIsoRegex=/^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;var basicIsoRegex=/^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;var tzRegex=/Z|[+-]\\d\\d(?::?\\d\\d)?/;var isoDates=[[\"YYYYYY-MM-DD\",/[+-]\\d{6}-\\d\\d-\\d\\d/],[\"YYYY-MM-DD\",/\\d{4}-\\d\\d-\\d\\d/],[\"GGGG-[W]WW-E\",/\\d{4}-W\\d\\d-\\d/],[\"GGGG-[W]WW\",/\\d{4}-W\\d\\d/,false],[\"YYYY-DDD\",/\\d{4}-\\d{3}/],[\"YYYY-MM\",/\\d{4}-\\d\\d/,false],[\"YYYYYYMMDD\",/[+-]\\d{10}/],[\"YYYYMMDD\",/\\d{8}/],[\"GGGG[W]WWE\",/\\d{4}W\\d{3}/],[\"GGGG[W]WW\",/\\d{4}W\\d{2}/,false],[\"YYYYDDD\",/\\d{7}/]];var isoTimes=[[\"HH:mm:ss.SSSS\",/\\d\\d:\\d\\d:\\d\\d\\.\\d+/],[\"HH:mm:ss,SSSS\",/\\d\\d:\\d\\d:\\d\\d,\\d+/],[\"HH:mm:ss\",/\\d\\d:\\d\\d:\\d\\d/],[\"HH:mm\",/\\d\\d:\\d\\d/],[\"HHmmss.SSSS\",/\\d\\d\\d\\d\\d\\d\\.\\d+/],[\"HHmmss,SSSS\",/\\d\\d\\d\\d\\d\\d,\\d+/],[\"HHmmss\",/\\d\\d\\d\\d\\d\\d/],[\"HHmm\",/\\d\\d\\d\\d/],[\"HH\",/\\d\\d/]];var aspNetJsonRegex=/^\\/?Date\\((\\-?\\d+)/i;function configFromISO(config){var i,l,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string),allowTime,dateFormat,timeFormat,tzFormat;if(match){getParsingFlags(config).iso=true;for(i=0,l=isoDates.length;i<l;i++){if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0];allowTime=isoDates[i][2]!==false;break}}if(dateFormat==null){config._isValid=false;return}if(match[3]){for(i=0,l=isoTimes.length;i<l;i++){if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||\" \")+isoTimes[i][0];break}}if(timeFormat==null){config._isValid=false;return}}if(!allowTime&&timeFormat!=null){config._isValid=false;return}if(match[4]){if(tzRegex.exec(match[4])){tzFormat=\"Z\"}else{config._isValid=false;return}}config._f=dateFormat+(timeFormat||\"\")+(tzFormat||\"\");configFromStringAndFormat(config)}else{config._isValid=false}}var rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;function extractFromRFC2822Strings(yearStr,monthStr,dayStr,hourStr,minuteStr,secondStr){var result=[untruncateYear(yearStr),defaultLocaleMonthsShort.indexOf(monthStr),parseInt(dayStr,10),parseInt(hourStr,10),parseInt(minuteStr,10)];if(secondStr){result.push(parseInt(secondStr,10))}return result}function untruncateYear(yearStr){var year=parseInt(yearStr,10);if(year<=49){return 2e3+year}else if(year<=999){return 1900+year}return year}function preprocessRFC2822(s){return s.replace(/\\([^)]*\\)|[\\n\\t]/g,\" \").replace(/(\\s\\s+)/g,\" \").trim()}function checkWeekday(weekdayStr,parsedInput,config){if(weekdayStr){var weekdayProvided=defaultLocaleWeekdaysShort.indexOf(weekdayStr),weekdayActual=new Date(parsedInput[0],parsedInput[1],parsedInput[2]).getDay();if(weekdayProvided!==weekdayActual){getParsingFlags(config).weekdayMismatch=true;config._isValid=false;return false}}return true}var obsOffsets={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function calculateOffset(obsOffset,militaryOffset,numOffset){if(obsOffset){return obsOffsets[obsOffset]}else if(militaryOffset){return 0}else{var hm=parseInt(numOffset,10);var m=hm%100,h=(hm-m)/100;return h*60+m}}function configFromRFC2822(config){var match=rfc2822.exec(preprocessRFC2822(config._i));if(match){var parsedArray=extractFromRFC2822Strings(match[4],match[3],match[2],match[5],match[6],match[7]);if(!checkWeekday(match[1],parsedArray,config)){return}config._a=parsedArray;config._tzm=calculateOffset(match[8],match[9],match[10]);config._d=createUTCDate.apply(null,config._a);config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm);getParsingFlags(config).rfc2822=true}else{config._isValid=false}}function configFromString(config){var matched=aspNetJsonRegex.exec(config._i);if(matched!==null){config._d=new Date(+matched[1]);return}configFromISO(config);if(config._isValid===false){delete config._isValid}else{return}configFromRFC2822(config);if(config._isValid===false){delete config._isValid}else{return}hooks.createFromInputFallback(config)}hooks.createFromInputFallback=deprecate(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), \"+\"which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are \"+\"discouraged and will be removed in an upcoming major release. Please refer to \"+\"http://momentjs.com/guides/#/warnings/js-date/ for more info.\",function(config){config._d=new Date(config._i+(config._useUTC?\" UTC\":\"\"))});hooks.ISO_8601=function(){};hooks.RFC_2822=function(){};function configFromStringAndFormat(config){if(config._f===hooks.ISO_8601){configFromISO(config);return}if(config._f===hooks.RFC_2822){configFromRFC2822(config);return}config._a=[];getParsingFlags(config).empty=true\n;var string=\"\"+config._i,i,parsedInput,tokens,token,skipped,stringLength=string.length,totalParsedInputLength=0;tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[];for(i=0;i<tokens.length;i++){token=tokens[i];parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0];if(parsedInput){skipped=string.substr(0,string.indexOf(parsedInput));if(skipped.length>0){getParsingFlags(config).unusedInput.push(skipped)}string=string.slice(string.indexOf(parsedInput)+parsedInput.length);totalParsedInputLength+=parsedInput.length}if(formatTokenFunctions[token]){if(parsedInput){getParsingFlags(config).empty=false}else{getParsingFlags(config).unusedTokens.push(token)}addTimeToArrayFromToken(token,parsedInput,config)}else if(config._strict&&!parsedInput){getParsingFlags(config).unusedTokens.push(token)}}getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength;if(string.length>0){getParsingFlags(config).unusedInput.push(string)}if(config._a[HOUR]<=12&&getParsingFlags(config).bigHour===true&&config._a[HOUR]>0){getParsingFlags(config).bigHour=undefined}getParsingFlags(config).parsedDateParts=config._a.slice(0);getParsingFlags(config).meridiem=config._meridiem;config._a[HOUR]=meridiemFixWrap(config._locale,config._a[HOUR],config._meridiem);configFromArray(config);checkOverflow(config)}function meridiemFixWrap(locale,hour,meridiem){var isPm;if(meridiem==null){return hour}if(locale.meridiemHour!=null){return locale.meridiemHour(hour,meridiem)}else if(locale.isPM!=null){isPm=locale.isPM(meridiem);if(isPm&&hour<12){hour+=12}if(!isPm&&hour===12){hour=0}return hour}else{return hour}}function configFromStringAndArray(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(config._f.length===0){getParsingFlags(config).invalidFormat=true;config._d=new Date(NaN);return}for(i=0;i<config._f.length;i++){currentScore=0;tempConfig=copyConfig({},config);if(config._useUTC!=null){tempConfig._useUTC=config._useUTC}tempConfig._f=config._f[i];configFromStringAndFormat(tempConfig);if(!isValid(tempConfig)){continue}currentScore+=getParsingFlags(tempConfig).charsLeftOver;currentScore+=getParsingFlags(tempConfig).unusedTokens.length*10;getParsingFlags(tempConfig).score=currentScore;if(scoreToBeat==null||currentScore<scoreToBeat){scoreToBeat=currentScore;bestMoment=tempConfig}}extend(config,bestMoment||tempConfig)}function configFromObject(config){if(config._d){return}var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10)});configFromArray(config)}function createFromConfig(config){var res=new Moment(checkOverflow(prepareConfig(config)));if(res._nextDay){res.add(1,\"d\");res._nextDay=undefined}return res}function prepareConfig(config){var input=config._i,format=config._f;config._locale=config._locale||getLocale(config._l);if(input===null||format===undefined&&input===\"\"){return createInvalid({nullInput:true})}if(typeof input===\"string\"){config._i=input=config._locale.preparse(input)}if(isMoment(input)){return new Moment(checkOverflow(input))}else if(isDate(input)){config._d=input}else if(isArray(format)){configFromStringAndArray(config)}else if(format){configFromStringAndFormat(config)}else{configFromInput(config)}if(!isValid(config)){config._d=null}return config}function configFromInput(config){var input=config._i;if(isUndefined(input)){config._d=new Date(hooks.now())}else if(isDate(input)){config._d=new Date(input.valueOf())}else if(typeof input===\"string\"){configFromString(config)}else if(isArray(input)){config._a=map(input.slice(0),function(obj){return parseInt(obj,10)});configFromArray(config)}else if(isObject(input)){configFromObject(config)}else if(isNumber(input)){config._d=new Date(input)}else{hooks.createFromInputFallback(config)}}function createLocalOrUTC(input,format,locale,strict,isUTC){var c={};if(locale===true||locale===false){strict=locale;locale=undefined}if(isObject(input)&&isObjectEmpty(input)||isArray(input)&&input.length===0){input=undefined}c._isAMomentObject=true;c._useUTC=c._isUTC=isUTC;c._l=locale;c._i=input;c._f=format;c._strict=strict;return createFromConfig(c)}function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,false)}var prototypeMin=deprecate(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var other=createLocal.apply(null,arguments);if(this.isValid()&&other.isValid()){return other<this?this:other}else{return createInvalid()}});var prototypeMax=deprecate(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var other=createLocal.apply(null,arguments);if(this.isValid()&&other.isValid()){return other>this?this:other}else{return createInvalid()}});function pickBy(fn,moments){var res,i;if(moments.length===1&&isArray(moments[0])){moments=moments[0]}if(!moments.length){return createLocal()}res=moments[0];for(i=1;i<moments.length;++i){if(!moments[i].isValid()||moments[i][fn](res)){res=moments[i]}}return res}function min(){var args=[].slice.call(arguments,0);return pickBy(\"isBefore\",args)}function max(){var args=[].slice.call(arguments,0);return pickBy(\"isAfter\",args)}var now=function(){return Date.now?Date.now():+new Date};var ordering=[\"year\",\"quarter\",\"month\",\"week\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"];function isDurationValid(m){for(var key in m){if(!(indexOf.call(ordering,key)!==-1&&(m[key]==null||!isNaN(m[key])))){return false}}var unitHasDecimal=false;for(var i=0;i<ordering.length;++i){if(m[ordering[i]]){if(unitHasDecimal){return false}if(parseFloat(m[ordering[i]])!==toInt(m[ordering[i]])){unitHasDecimal=true}}}return true}function isValid$1(){return this._isValid}function createInvalid$1(){return createDuration(NaN)}function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._isValid=isDurationValid(normalizedInput);this._milliseconds=+milliseconds+seconds*1e3+minutes*6e4+hours*1e3*60*60;this._days=+days+weeks*7;this._months=+months+quarters*3+years*12;this._data={};this._locale=getLocale();this._bubble()}function isDuration(obj){return obj instanceof Duration}function absRound(number){if(number<0){return Math.round(-1*number)*-1}else{return Math.round(number)}}function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset();var sign=\"+\";if(offset<0){offset=-offset;sign=\"-\"}return sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~offset%60,2)})}offset(\"Z\",\":\");offset(\"ZZ\",\"\");addRegexToken(\"Z\",matchShortOffset);addRegexToken(\"ZZ\",matchShortOffset);addParseToken([\"Z\",\"ZZ\"],function(input,array,config){config._useUTC=true;config._tzm=offsetFromString(matchShortOffset,input)});var chunkOffset=/([\\+\\-]|\\d\\d)/gi;function offsetFromString(matcher,string){var matches=(string||\"\").match(matcher);if(matches===null){return null}var chunk=matches[matches.length-1]||[];var parts=(chunk+\"\").match(chunkOffset)||[\"-\",0,0];var minutes=+(parts[1]*60)+toInt(parts[2]);return minutes===0?0:parts[0]===\"+\"?minutes:-minutes}function cloneWithOffset(input,model){var res,diff;if(model._isUTC){res=model.clone();diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf();res._d.setTime(res._d.valueOf()+diff);hooks.updateOffset(res,false);return res}else{return createLocal(input).local()}}function getDateOffset(m){return-Math.round(m._d.getTimezoneOffset()/15)*15}hooks.updateOffset=function(){};function getSetOffset(input,keepLocalTime,keepMinutes){var offset=this._offset||0,localAdjust;if(!this.isValid()){return input!=null?this:NaN}if(input!=null){if(typeof input===\"string\"){input=offsetFromString(matchShortOffset,input);if(input===null){return this}}else if(Math.abs(input)<16&&!keepMinutes){input=input*60}if(!this._isUTC&&keepLocalTime){localAdjust=getDateOffset(this)}this._offset=input;this._isUTC=true;if(localAdjust!=null){this.add(localAdjust,\"m\")}if(offset!==input){if(!keepLocalTime||this._changeInProgress){addSubtract(this,createDuration(input-offset,\"m\"),1,false)}else if(!this._changeInProgress){this._changeInProgress=true;hooks.updateOffset(this,true);this._changeInProgress=null}}return this}else{return this._isUTC?offset:getDateOffset(this)}}function getSetZone(input,keepLocalTime){if(input!=null){if(typeof input!==\"string\"){input=-input}this.utcOffset(input,keepLocalTime);return this}else{return-this.utcOffset()}}function setOffsetToUTC(keepLocalTime){return this.utcOffset(0,keepLocalTime)}function setOffsetToLocal(keepLocalTime){if(this._isUTC){this.utcOffset(0,keepLocalTime);this._isUTC=false;if(keepLocalTime){this.subtract(getDateOffset(this),\"m\")}}return this}function setOffsetToParsedOffset(){if(this._tzm!=null){this.utcOffset(this._tzm,false,true)}else if(typeof this._i===\"string\"){var tZone=offsetFromString(matchOffset,this._i);if(tZone!=null){this.utcOffset(tZone)}else{this.utcOffset(0,true)}}return this}function hasAlignedHourOffset(input){if(!this.isValid()){return false}input=input?createLocal(input).utcOffset():0;return(this.utcOffset()-input)%60===0}function isDaylightSavingTime(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function isDaylightSavingTimeShifted(){if(!isUndefined(this._isDSTShifted)){return this._isDSTShifted}var c={};copyConfig(c,this);c=prepareConfig(c);if(c._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0}else{this._isDSTShifted=false}return this._isDSTShifted}function isLocal(){return this.isValid()?!this._isUTC:false}function isUtcOffset(){return this.isValid()?this._isUTC:false}function isUtc(){return this.isValid()?this._isUTC&&this._offset===0:false}var aspNetRegex=/^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;var isoRegex=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var duration=input,match=null,sign,ret,diffRes;if(isDuration(input)){duration={ms:input._milliseconds,d:input._days,M:input._months}}else if(isNumber(input)){duration={};if(key){duration[key]=input}else{duration.milliseconds=input}}else if(!!(match=aspNetRegex.exec(input))){sign=match[1]===\"-\"?-1:1;duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(match[MILLISECOND]*1e3))*sign}}else if(!!(match=isoRegex.exec(input))){sign=match[1]===\"-\"?-1:match[1]===\"+\"?1:1;duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)}}else if(duration==null){duration={}}else if(typeof duration===\"object\"&&(\"from\"in duration||\"to\"in duration)){diffRes=momentsDifference(createLocal(duration.from),createLocal(duration.to));duration={};duration.ms=diffRes.milliseconds;duration.M=diffRes.months}ret=new Duration(duration);if(isDuration(input)&&hasOwnProp(input,\"_locale\")){ret._locale=input._locale}return ret}createDuration.fn=Duration.prototype;createDuration.invalid=createInvalid$1;function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(\",\",\".\"));return(isNaN(res)?0:res)*sign}function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};res.months=other.month()-base.month()+(other.year()-base.year())*12;if(base.clone().add(res.months,\"M\").isAfter(other)){--res.months}res.milliseconds=+other-+base.clone().add(res.months,\"M\");return res}function momentsDifference(base,other){var res;if(!(base.isValid()&&other.isValid())){return{milliseconds:0,months:0}}other=cloneWithOffset(other,base);if(base.isBefore(other)){res=positiveMomentsDifference(base,other)}else{res=positiveMomentsDifference(other,base);res.milliseconds=-res.milliseconds;res.months=-res.months}return res}function createAdder(direction,name){return function(val,period){var dur,tmp;if(period!==null&&!isNaN(+period)){deprecateSimple(name,\"moment().\"+name+\"(period, number) is deprecated. Please use moment().\"+name+\"(number, period). \"+\"See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\");tmp=val;val=period;period=tmp}val=typeof val===\"string\"?+val:val;dur=createDuration(val,period);addSubtract(this,dur,direction);return this}}function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);if(!mom.isValid()){return}updateOffset=updateOffset==null?true:updateOffset;if(months){setMonth(mom,get(mom,\"Month\")+months*isAdding)}if(days){set$1(mom,\"Date\",get(mom,\"Date\")+days*isAdding)}if(milliseconds){mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding)}if(updateOffset){hooks.updateOffset(mom,days||months)}}var add=createAdder(1,\"add\");var subtract=createAdder(-1,\"subtract\");function getCalendarFormat(myMoment,now){var diff=myMoment.diff(now,\"days\",true);return diff<-6?\"sameElse\":diff<-1?\"lastWeek\":diff<0?\"lastDay\":diff<1?\"sameDay\":diff<2?\"nextDay\":diff<7?\"nextWeek\":\"sameElse\"}function calendar$1(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf(\"day\"),format=hooks.calendarFormat(this,sod)||\"sameElse\";var output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)))}function clone(){return new Moment(this)}function isAfter(input,units){var localInput=isMoment(input)?input:createLocal(input);if(!(this.isValid()&&localInput.isValid())){return false}units=normalizeUnits(!isUndefined(units)?units:\"millisecond\");if(units===\"millisecond\"){return this.valueOf()>localInput.valueOf()}else{return localInput.valueOf()<this.clone().startOf(units).valueOf()}}function isBefore(input,units){var localInput=isMoment(input)?input:createLocal(input);if(!(this.isValid()&&localInput.isValid())){return false}units=normalizeUnits(!isUndefined(units)?units:\"millisecond\");if(units===\"millisecond\"){return this.valueOf()<localInput.valueOf()}else{return this.clone().endOf(units).valueOf()<localInput.valueOf()}}function isBetween(from,to,units,inclusivity){inclusivity=inclusivity||\"()\";return(inclusivity[0]===\"(\"?this.isAfter(from,units):!this.isBefore(from,units))&&(inclusivity[1]===\")\"?this.isBefore(to,units):!this.isAfter(to,units))}function isSame(input,units){var localInput=isMoment(input)?input:createLocal(input),inputMs;if(!(this.isValid()&&localInput.isValid())){return false}units=normalizeUnits(units||\"millisecond\");if(units===\"millisecond\"){return this.valueOf()===localInput.valueOf()}else{inputMs=localInput.valueOf();return this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf()}}function isSameOrAfter(input,units){return this.isSame(input,units)||this.isAfter(input,units)}function isSameOrBefore(input,units){return this.isSame(input,units)||this.isBefore(input,units)}function diff(input,units,asFloat){var that,zoneDelta,delta,output;if(!this.isValid()){return NaN}that=cloneWithOffset(input,this);if(!that.isValid()){return NaN}zoneDelta=(that.utcOffset()-this.utcOffset())*6e4;units=normalizeUnits(units);switch(units){case\"year\":output=monthDiff(this,that)/12;break;case\"month\":output=monthDiff(this,that);break;case\"quarter\":output=monthDiff(this,that)/3;break;case\"second\":output=(this-that)/1e3;break;case\"minute\":output=(this-that)/6e4;break;case\"hour\":output=(this-that)/36e5;break;case\"day\":output=(this-that-zoneDelta)/864e5;break;case\"week\":output=(this-that-zoneDelta)/6048e5;break;default:output=this-that}return asFloat?output:absFloor(output)}function monthDiff(a,b){var wholeMonthDiff=(b.year()-a.year())*12+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,\"months\"),anchor2,adjust;if(b-anchor<0){anchor2=a.clone().add(wholeMonthDiff-1,\"months\");adjust=(b-anchor)/(anchor-anchor2)}else{anchor2=a.clone().add(wholeMonthDiff+1,\"months\");adjust=(b-anchor)/(anchor2-anchor)}return-(wholeMonthDiff+adjust)||0}hooks.defaultFormat=\"YYYY-MM-DDTHH:mm:ssZ\";hooks.defaultFormatUtc=\"YYYY-MM-DDTHH:mm:ss[Z]\";function toString(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")}function toISOString(){if(!this.isValid()){return null}var m=this.clone().utc();if(m.year()<0||m.year()>9999){return formatMoment(m,\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\")}if(isFunction(Date.prototype.toISOString)){return this.toDate().toISOString()}return formatMoment(m,\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\")}function inspect(){if(!this.isValid()){return\"moment.invalid(/* \"+this._i+\" */)\"}var func=\"moment\";var zone=\"\";if(!this.isLocal()){func=this.utcOffset()===0?\"moment.utc\":\"moment.parseZone\";zone=\"Z\"}var prefix=\"[\"+func+'(\"]';var year=0<=this.year()&&this.year()<=9999?\"YYYY\":\"YYYYYY\";var datetime=\"-MM-DD[T]HH:mm:ss.SSS\";var suffix=zone+'[\")]';return this.format(prefix+year+datetime+suffix)}function format(inputString){if(!inputString){inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat}var output=formatMoment(this,inputString);return this.localeData().postformat(output)}function from(time,withoutSuffix){if(this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())){return createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix)}else{return this.localeData().invalidDate()}}function fromNow(withoutSuffix){return this.from(createLocal(),withoutSuffix)}function to(time,withoutSuffix){if(this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())){return createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix)}else{return this.localeData().invalidDate()}}function toNow(withoutSuffix){return this.to(createLocal(),withoutSuffix)}function locale(key){var newLocaleData;if(key===undefined){return this._locale._abbr}else{newLocaleData=getLocale(key);if(newLocaleData!=null){this._locale=newLocaleData}return this}}var lang=deprecate(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\",function(key){if(key===undefined){return this.localeData()}else{return this.locale(key)}});function localeData(){return this._locale}function startOf(units){units=normalizeUnits(units);switch(units){case\"year\":this.month(0);case\"quarter\":case\"month\":this.date(1);case\"week\":case\"isoWeek\":case\"day\":case\"date\":this.hours(0);case\"hour\":this.minutes(0);case\"minute\":this.seconds(0);case\"second\":this.milliseconds(0)}if(units===\"week\"){this.weekday(0)}if(units===\"isoWeek\"){this.isoWeekday(1)}if(units===\"quarter\"){this.month(Math.floor(this.month()/3)*3)}return this}function endOf(units){units=normalizeUnits(units);if(units===undefined||units===\"millisecond\"){return this}if(units===\"date\"){units=\"day\"}return this.startOf(units).add(1,units===\"isoWeek\"?\"week\":units).subtract(1,\"ms\")}function valueOf(){return this._d.valueOf()-(this._offset||0)*6e4}function unix(){return Math.floor(this.valueOf()/1e3)}function toDate(){return new Date(this.valueOf())}function toArray(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()]}function toObject(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()}}function toJSON(){return this.isValid()?this.toISOString():null}function isValid$2(){return isValid(this)}function parsingFlags(){return extend({},getParsingFlags(this))}function invalidAt(){return getParsingFlags(this).overflow}function creationData(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}addFormatToken(0,[\"gg\",2],0,function(){return this.weekYear()%100});addFormatToken(0,[\"GG\",2],0,function(){return this.isoWeekYear()%100});function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter)}addWeekYearFormatToken(\"gggg\",\"weekYear\");addWeekYearFormatToken(\"ggggg\",\"weekYear\");addWeekYearFormatToken(\"GGGG\",\"isoWeekYear\");addWeekYearFormatToken(\"GGGGG\",\"isoWeekYear\");addUnitAlias(\"weekYear\",\"gg\");addUnitAlias(\"isoWeekYear\",\"GG\");addUnitPriority(\"weekYear\",1);addUnitPriority(\"isoWeekYear\",1);addRegexToken(\"G\",matchSigned);addRegexToken(\"g\",matchSigned);addRegexToken(\"GG\",match1to2,match2);addRegexToken(\"gg\",match1to2,match2);addRegexToken(\"GGGG\",match1to4,match4);addRegexToken(\"gggg\",match1to4,match4);addRegexToken(\"GGGGG\",match1to6,match6);addRegexToken(\"ggggg\",match1to6,match6);addWeekParseToken([\"gggg\",\"ggggg\",\"GGGG\",\"GGGGG\"],function(input,week,config,token){week[token.substr(0,2)]=toInt(input)});addWeekParseToken([\"gg\",\"GG\"],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input)});function getSetWeekYear(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function getSetISOWeekYear(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4)}function getISOWeeksInYear(){return weeksInYear(this.year(),1,4)}function getWeeksInYear(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)}function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;if(input==null){return weekOfYear(this,dow,doy).year}else{weeksTarget=weeksInYear(input,dow,doy);if(week>weeksTarget){week=weeksTarget}return setWeekAll.call(this,input,week,weekday,dow,doy)}}function setWeekAll(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);this.year(date.getUTCFullYear());this.month(date.getUTCMonth());this.date(date.getUTCDate());return this}addFormatToken(\"Q\",0,\"Qo\",\"quarter\");addUnitAlias(\"quarter\",\"Q\");addUnitPriority(\"quarter\",7);addRegexToken(\"Q\",match1);addParseToken(\"Q\",function(input,array){array[MONTH]=(toInt(input)-1)*3});function getSetQuarter(input){return input==null?Math.ceil((this.month()+1)/3):this.month((input-1)*3+this.month()%3)}addFormatToken(\"D\",[\"DD\",2],\"Do\",\"date\");addUnitAlias(\"date\",\"D\");addUnitPriority(\"date\",9);addRegexToken(\"D\",match1to2);addRegexToken(\"DD\",match1to2,match2);addRegexToken(\"Do\",function(isStrict,locale){return isStrict?locale._dayOfMonthOrdinalParse||locale._ordinalParse:locale._dayOfMonthOrdinalParseLenient});addParseToken([\"D\",\"DD\"],DATE);addParseToken(\"Do\",function(input,array){array[DATE]=toInt(input.match(match1to2)[0],10)});var getSetDayOfMonth=makeGetSet(\"Date\",true);addFormatToken(\"DDD\",[\"DDDD\",3],\"DDDo\",\"dayOfYear\");addUnitAlias(\"dayOfYear\",\"DDD\");addUnitPriority(\"dayOfYear\",4);addRegexToken(\"DDD\",match1to3);addRegexToken(\"DDDD\",match3);addParseToken([\"DDD\",\"DDDD\"],function(input,array,config){config._dayOfYear=toInt(input)});function getSetDayOfYear(input){var dayOfYear=Math.round((this.clone().startOf(\"day\")-this.clone().startOf(\"year\"))/864e5)+1;return input==null?dayOfYear:this.add(input-dayOfYear,\"d\")}addFormatToken(\"m\",[\"mm\",2],0,\"minute\");addUnitAlias(\"minute\",\"m\");addUnitPriority(\"minute\",14);addRegexToken(\"m\",match1to2);addRegexToken(\"mm\",match1to2,match2);addParseToken([\"m\",\"mm\"],MINUTE);var getSetMinute=makeGetSet(\"Minutes\",false);addFormatToken(\"s\",[\"ss\",2],0,\"second\");addUnitAlias(\"second\",\"s\");addUnitPriority(\"second\",15);addRegexToken(\"s\",match1to2);addRegexToken(\"ss\",match1to2,match2);addParseToken([\"s\",\"ss\"],SECOND);var getSetSecond=makeGetSet(\"Seconds\",false);addFormatToken(\"S\",0,0,function(){return~~(this.millisecond()/100)});addFormatToken(0,[\"SS\",2],0,function(){return~~(this.millisecond()/10)});addFormatToken(0,[\"SSS\",3],0,\"millisecond\");addFormatToken(0,[\"SSSS\",4],0,function(){return this.millisecond()*10});addFormatToken(0,[\"SSSSS\",5],0,function(){return this.millisecond()*100});addFormatToken(0,[\"SSSSSS\",6],0,function(){return this.millisecond()*1e3});addFormatToken(0,[\"SSSSSSS\",7],0,function(){return this.millisecond()*1e4});addFormatToken(0,[\"SSSSSSSS\",8],0,function(){return this.millisecond()*1e5});addFormatToken(0,[\"SSSSSSSSS\",9],0,function(){return this.millisecond()*1e6});addUnitAlias(\"millisecond\",\"ms\");addUnitPriority(\"millisecond\",16);addRegexToken(\"S\",match1to3,match1);addRegexToken(\"SS\",match1to3,match2);addRegexToken(\"SSS\",match1to3,match3);var token;for(token=\"SSSS\";token.length<=9;token+=\"S\"){addRegexToken(token,matchUnsigned)}function parseMs(input,array){array[MILLISECOND]=toInt((\"0.\"+input)*1e3)}for(token=\"S\";token.length<=9;token+=\"S\"){addParseToken(token,parseMs)}var getSetMillisecond=makeGetSet(\"Milliseconds\",false);addFormatToken(\"z\",0,0,\"zoneAbbr\");addFormatToken(\"zz\",0,0,\"zoneName\");function getZoneAbbr(){return this._isUTC?\"UTC\":\"\"}function getZoneName(){return this._isUTC?\"Coordinated Universal Time\":\"\"}var proto=Moment.prototype;proto.add=add;proto.calendar=calendar$1;proto.clone=clone;proto.diff=diff;proto.endOf=endOf;proto.format=format;proto.from=from;proto.fromNow=fromNow;proto.to=to;proto.toNow=toNow;proto.get=stringGet;proto.invalidAt=invalidAt;proto.isAfter=isAfter;proto.isBefore=isBefore;proto.isBetween=isBetween;proto.isSame=isSame;proto.isSameOrAfter=isSameOrAfter;proto.isSameOrBefore=isSameOrBefore;proto.isValid=isValid$2;proto.lang=lang;proto.locale=locale;proto.localeData=localeData;proto.max=prototypeMax;proto.min=prototypeMin;proto.parsingFlags=parsingFlags;proto.set=stringSet;proto.startOf=startOf;proto.subtract=subtract;proto.toArray=toArray;proto.toObject=toObject;proto.toDate=toDate;proto.toISOString=toISOString;proto.inspect=inspect;proto.toJSON=toJSON;proto.toString=toString;proto.unix=unix;proto.valueOf=valueOf;proto.creationData=creationData;proto.year=getSetYear;proto.isLeapYear=getIsLeapYear;proto.weekYear=getSetWeekYear;proto.isoWeekYear=getSetISOWeekYear;proto.quarter=proto.quarters=getSetQuarter;proto.month=getSetMonth;proto.daysInMonth=getDaysInMonth;proto.week=proto.weeks=getSetWeek;proto.isoWeek=proto.isoWeeks=getSetISOWeek;proto.weeksInYear=getWeeksInYear;proto.isoWeeksInYear=getISOWeeksInYear;proto.date=getSetDayOfMonth;proto.day=proto.days=getSetDayOfWeek;proto.weekday=getSetLocaleDayOfWeek;proto.isoWeekday=getSetISODayOfWeek;proto.dayOfYear=getSetDayOfYear;proto.hour=proto.hours=getSetHour;proto.minute=proto.minutes=getSetMinute;proto.second=proto.seconds=getSetSecond;proto.millisecond=proto.milliseconds=getSetMillisecond;proto.utcOffset=getSetOffset;proto.utc=setOffsetToUTC;proto.local=setOffsetToLocal;proto.parseZone=setOffsetToParsedOffset;proto.hasAlignedHourOffset=hasAlignedHourOffset;proto.isDST=isDaylightSavingTime;proto.isLocal=isLocal;proto.isUtcOffset=isUtcOffset;proto.isUtc=isUtc;proto.isUTC=isUtc;proto.zoneAbbr=getZoneAbbr;proto.zoneName=getZoneName;proto.dates=deprecate(\"dates accessor is deprecated. Use date instead.\",getSetDayOfMonth);proto.months=deprecate(\"months accessor is deprecated. Use month instead\",getSetMonth);proto.years=deprecate(\"years accessor is deprecated. Use year instead\",getSetYear);proto.zone=deprecate(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\",getSetZone);proto.isDSTShifted=deprecate(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\",isDaylightSavingTimeShifted);function createUnix(input){return createLocal(input*1e3)}function createInZone(){return createLocal.apply(null,arguments).parseZone()}function preParsePostFormat(string){return string}var proto$1=Locale.prototype;proto$1.calendar=calendar;proto$1.longDateFormat=longDateFormat;proto$1.invalidDate=invalidDate;proto$1.ordinal=ordinal;proto$1.preparse=preParsePostFormat;proto$1.postformat=preParsePostFormat;proto$1.relativeTime=relativeTime;proto$1.pastFuture=pastFuture;proto$1.set=set;proto$1.months=localeMonths;proto$1.monthsShort=localeMonthsShort;proto$1.monthsParse=localeMonthsParse;proto$1.monthsRegex=monthsRegex;proto$1.monthsShortRegex=monthsShortRegex;proto$1.week=localeWeek;proto$1.firstDayOfYear=localeFirstDayOfYear;proto$1.firstDayOfWeek=localeFirstDayOfWeek;proto$1.weekdays=localeWeekdays;proto$1.weekdaysMin=localeWeekdaysMin;proto$1.weekdaysShort=localeWeekdaysShort;proto$1.weekdaysParse=localeWeekdaysParse;proto$1.weekdaysRegex=weekdaysRegex;proto$1.weekdaysShortRegex=weekdaysShortRegex;proto$1.weekdaysMinRegex=weekdaysMinRegex;proto$1.isPM=localeIsPM;proto$1.meridiem=localeMeridiem;function get$1(format,index,field,setter){var locale=getLocale();var utc=createUTC().set(setter,index);return locale[field](utc,format)}function listMonthsImpl(format,index,field){if(isNumber(format)){index=format;format=undefined}format=format||\"\";if(index!=null){return get$1(format,index,field,\"month\")}var i;var out=[];for(i=0;i<12;i++){out[i]=get$1(format,i,field,\"month\")}return out}function listWeekdaysImpl(localeSorted,format,index,field){if(typeof localeSorted===\"boolean\"){if(isNumber(format)){index=format;format=undefined}format=format||\"\"}else{format=localeSorted;index=format;localeSorted=false;if(isNumber(format)){index=format;format=undefined}format=format||\"\"}var locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(index!=null){return get$1(format,(index+shift)%7,field,\"day\")}var i;var out=[];for(i=0;i<7;i++){out[i]=get$1(format,(i+shift)%7,field,\"day\")}return out}function listMonths(format,index){return listMonthsImpl(format,index,\"months\")}function listMonthsShort(format,index){return listMonthsImpl(format,index,\"monthsShort\")}function listWeekdays(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,\"weekdays\")}function listWeekdaysShort(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,\"weekdaysShort\")}function listWeekdaysMin(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,\"weekdaysMin\")}getSetGlobalLocale(\"en\",{dayOfMonthOrdinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10,output=toInt(number%100/10)===1?\"th\":b===1?\"st\":b===2?\"nd\":b===3?\"rd\":\"th\";return number+output}});hooks.lang=deprecate(\"moment.lang is deprecated. Use moment.locale instead.\",getSetGlobalLocale);hooks.langData=deprecate(\"moment.langData is deprecated. Use moment.localeData instead.\",getLocale);var mathAbs=Math.abs;function abs(){var data=this._data;this._milliseconds=mathAbs(this._milliseconds);this._days=mathAbs(this._days);this._months=mathAbs(this._months);data.milliseconds=mathAbs(data.milliseconds);data.seconds=mathAbs(data.seconds);data.minutes=mathAbs(data.minutes);data.hours=mathAbs(data.hours);data.months=mathAbs(data.months);data.years=mathAbs(data.years);return this}function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);duration._milliseconds+=direction*other._milliseconds;duration._days+=direction*other._days;duration._months+=direction*other._months;return duration._bubble()}function add$1(input,value){return addSubtract$1(this,input,value,1)}function subtract$1(input,value){return addSubtract$1(this,input,value,-1)}function absCeil(number){if(number<0){return Math.floor(number)}else{return Math.ceil(number)}}function bubble(){var milliseconds=this._milliseconds;var days=this._days;var months=this._months;var data=this._data;var seconds,minutes,hours,years,monthsFromDays;if(!(milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0)){milliseconds+=absCeil(monthsToDays(months)+days)*864e5;days=0;months=0}data.milliseconds=milliseconds%1e3;seconds=absFloor(milliseconds/1e3);data.seconds=seconds%60;minutes=absFloor(seconds/60)\n;data.minutes=minutes%60;hours=absFloor(minutes/60);data.hours=hours%24;days+=absFloor(hours/24);monthsFromDays=absFloor(daysToMonths(days));months+=monthsFromDays;days-=absCeil(monthsToDays(monthsFromDays));years=absFloor(months/12);months%=12;data.days=days;data.months=months;data.years=years;return this}function daysToMonths(days){return days*4800/146097}function monthsToDays(months){return months*146097/4800}function as(units){if(!this.isValid()){return NaN}var days;var months;var milliseconds=this._milliseconds;units=normalizeUnits(units);if(units===\"month\"||units===\"year\"){days=this._days+milliseconds/864e5;months=this._months+daysToMonths(days);return units===\"month\"?months:months/12}else{days=this._days+Math.round(monthsToDays(this._months));switch(units){case\"week\":return days/7+milliseconds/6048e5;case\"day\":return days+milliseconds/864e5;case\"hour\":return days*24+milliseconds/36e5;case\"minute\":return days*1440+milliseconds/6e4;case\"second\":return days*86400+milliseconds/1e3;case\"millisecond\":return Math.floor(days*864e5)+milliseconds;default:throw new Error(\"Unknown unit \"+units)}}}function valueOf$1(){if(!this.isValid()){return NaN}return this._milliseconds+this._days*864e5+this._months%12*2592e6+toInt(this._months/12)*31536e6}function makeAs(alias){return function(){return this.as(alias)}}var asMilliseconds=makeAs(\"ms\");var asSeconds=makeAs(\"s\");var asMinutes=makeAs(\"m\");var asHours=makeAs(\"h\");var asDays=makeAs(\"d\");var asWeeks=makeAs(\"w\");var asMonths=makeAs(\"M\");var asYears=makeAs(\"y\");function clone$1(){return createDuration(this)}function get$2(units){units=normalizeUnits(units);return this.isValid()?this[units+\"s\"]():NaN}function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN}}var milliseconds=makeGetter(\"milliseconds\");var seconds=makeGetter(\"seconds\");var minutes=makeGetter(\"minutes\");var hours=makeGetter(\"hours\");var days=makeGetter(\"days\");var months=makeGetter(\"months\");var years=makeGetter(\"years\");function weeks(){return absFloor(this.days()/7)}var round=Math.round;var thresholds={ss:44,s:45,m:45,h:22,d:26,M:11};function substituteTimeAgo(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture)}function relativeTime$1(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs();var seconds=round(duration.as(\"s\"));var minutes=round(duration.as(\"m\"));var hours=round(duration.as(\"h\"));var days=round(duration.as(\"d\"));var months=round(duration.as(\"M\"));var years=round(duration.as(\"y\"));var a=seconds<=thresholds.ss&&[\"s\",seconds]||seconds<thresholds.s&&[\"ss\",seconds]||minutes<=1&&[\"m\"]||minutes<thresholds.m&&[\"mm\",minutes]||hours<=1&&[\"h\"]||hours<thresholds.h&&[\"hh\",hours]||days<=1&&[\"d\"]||days<thresholds.d&&[\"dd\",days]||months<=1&&[\"M\"]||months<thresholds.M&&[\"MM\",months]||years<=1&&[\"y\"]||[\"yy\",years];a[2]=withoutSuffix;a[3]=+posNegDuration>0;a[4]=locale;return substituteTimeAgo.apply(null,a)}function getSetRelativeTimeRounding(roundingFunction){if(roundingFunction===undefined){return round}if(typeof roundingFunction===\"function\"){round=roundingFunction;return true}return false}function getSetRelativeTimeThreshold(threshold,limit){if(thresholds[threshold]===undefined){return false}if(limit===undefined){return thresholds[threshold]}thresholds[threshold]=limit;if(threshold===\"s\"){thresholds.ss=limit-1}return true}function humanize(withSuffix){if(!this.isValid()){return this.localeData().invalidDate()}var locale=this.localeData();var output=relativeTime$1(this,!withSuffix,locale);if(withSuffix){output=locale.pastFuture(+this,output)}return locale.postformat(output)}var abs$1=Math.abs;function sign(x){return(x>0)-(x<0)||+x}function toISOString$1(){if(!this.isValid()){return this.localeData().invalidDate()}var seconds=abs$1(this._milliseconds)/1e3;var days=abs$1(this._days);var months=abs$1(this._months);var minutes,hours,years;minutes=absFloor(seconds/60);hours=absFloor(minutes/60);seconds%=60;minutes%=60;years=absFloor(months/12);months%=12;var Y=years;var M=months;var D=days;var h=hours;var m=minutes;var s=seconds?seconds.toFixed(3).replace(/\\.?0+$/,\"\"):\"\";var total=this.asSeconds();if(!total){return\"P0D\"}var totalSign=total<0?\"-\":\"\";var ymSign=sign(this._months)!==sign(total)?\"-\":\"\";var daysSign=sign(this._days)!==sign(total)?\"-\":\"\";var hmsSign=sign(this._milliseconds)!==sign(total)?\"-\":\"\";return totalSign+\"P\"+(Y?ymSign+Y+\"Y\":\"\")+(M?ymSign+M+\"M\":\"\")+(D?daysSign+D+\"D\":\"\")+(h||m||s?\"T\":\"\")+(h?hmsSign+h+\"H\":\"\")+(m?hmsSign+m+\"M\":\"\")+(s?hmsSign+s+\"S\":\"\")}var proto$2=Duration.prototype;proto$2.isValid=isValid$1;proto$2.abs=abs;proto$2.add=add$1;proto$2.subtract=subtract$1;proto$2.as=as;proto$2.asMilliseconds=asMilliseconds;proto$2.asSeconds=asSeconds;proto$2.asMinutes=asMinutes;proto$2.asHours=asHours;proto$2.asDays=asDays;proto$2.asWeeks=asWeeks;proto$2.asMonths=asMonths;proto$2.asYears=asYears;proto$2.valueOf=valueOf$1;proto$2._bubble=bubble;proto$2.clone=clone$1;proto$2.get=get$2;proto$2.milliseconds=milliseconds;proto$2.seconds=seconds;proto$2.minutes=minutes;proto$2.hours=hours;proto$2.days=days;proto$2.weeks=weeks;proto$2.months=months;proto$2.years=years;proto$2.humanize=humanize;proto$2.toISOString=toISOString$1;proto$2.toString=toISOString$1;proto$2.toJSON=toISOString$1;proto$2.locale=locale;proto$2.localeData=localeData;proto$2.toIsoString=deprecate(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\",toISOString$1);proto$2.lang=lang;addFormatToken(\"X\",0,0,\"unix\");addFormatToken(\"x\",0,0,\"valueOf\");addRegexToken(\"x\",matchSigned);addRegexToken(\"X\",matchTimestamp);addParseToken(\"X\",function(input,array,config){config._d=new Date(parseFloat(input,10)*1e3)});addParseToken(\"x\",function(input,array,config){config._d=new Date(toInt(input))});hooks.version=\"2.19.1\";setHookCallback(createLocal);hooks.fn=proto;hooks.min=min;hooks.max=max;hooks.now=now;hooks.utc=createUTC;hooks.unix=createUnix;hooks.months=listMonths;hooks.isDate=isDate;hooks.locale=getSetGlobalLocale;hooks.invalid=createInvalid;hooks.duration=createDuration;hooks.isMoment=isMoment;hooks.weekdays=listWeekdays;hooks.parseZone=createInZone;hooks.localeData=getLocale;hooks.isDuration=isDuration;hooks.monthsShort=listMonthsShort;hooks.weekdaysMin=listWeekdaysMin;hooks.defineLocale=defineLocale;hooks.updateLocale=updateLocale;hooks.locales=listLocales;hooks.weekdaysShort=listWeekdaysShort;hooks.normalizeUnits=normalizeUnits;hooks.relativeTimeRounding=getSetRelativeTimeRounding;hooks.relativeTimeThreshold=getSetRelativeTimeThreshold;hooks.calendarFormat=getCalendarFormat;hooks.prototype=proto;return hooks})}).call(exports,__webpack_require__(155)(module))},function(module,exports){module.exports=function(module){if(!module.webpackPolyfill){module.deprecate=function(){};module.paths=[];if(!module.children)module.children=[];Object.defineProperty(module,\"loaded\",{enumerable:true,get:function(){return module.l}});Object.defineProperty(module,\"id\",{enumerable:true,get:function(){return module.i}});module.webpackPolyfill=1}return module}},function(module,exports){function webpackEmptyContext(req){throw new Error(\"Cannot find module '\"+req+\"'.\")}webpackEmptyContext.keys=function(){return[]};webpackEmptyContext.resolve=webpackEmptyContext;module.exports=webpackEmptyContext;webpackEmptyContext.id=156},function(module,exports,__webpack_require__){\"use strict\";(function(global){var _rng;var globalVar=typeof window!==\"undefined\"?window:typeof global!==\"undefined\"?global:null;if(globalVar&&globalVar.crypto&&crypto.getRandomValues){var _rnds8=new Uint8Array(16);_rng=function whatwgRNG(){crypto.getRandomValues(_rnds8);return _rnds8}}if(!_rng){var _rnds=new Array(16);_rng=function _rng(){for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;_rnds[i]=r>>>((i&3)<<3)&255}return _rnds}}var _byteToHex=[];var _hexToByte={};for(var i=0;i<256;i++){_byteToHex[i]=(i+256).toString(16).substr(1);_hexToByte[_byteToHex[i]]=i}function parse(s,buf,offset){var i=buf&&offset||0,ii=0;buf=buf||[];s.toLowerCase().replace(/[0-9a-f]{2}/g,function(oct){if(ii<16){buf[i+ii++]=_hexToByte[oct]}});while(ii<16){buf[i+ii++]=0}return buf}function unparse(buf,offset){var i=offset||0,bth=_byteToHex;return bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+\"-\"+bth[buf[i++]]+bth[buf[i++]]+\"-\"+bth[buf[i++]]+bth[buf[i++]]+\"-\"+bth[buf[i++]]+bth[buf[i++]]+\"-\"+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]}var _seedBytes=_rng();var _nodeId=[_seedBytes[0]|1,_seedBytes[1],_seedBytes[2],_seedBytes[3],_seedBytes[4],_seedBytes[5]];var _clockseq=(_seedBytes[6]<<8|_seedBytes[7])&16383;var _lastMSecs=0,_lastNSecs=0;function v1(options,buf,offset){var i=buf&&offset||0;var b=buf||[];options=options||{};var clockseq=options.clockseq!==undefined?options.clockseq:_clockseq;var msecs=options.msecs!==undefined?options.msecs:(new Date).getTime();var nsecs=options.nsecs!==undefined?options.nsecs:_lastNSecs+1;var dt=msecs-_lastMSecs+(nsecs-_lastNSecs)/1e4;if(dt<0&&options.clockseq===undefined){clockseq=clockseq+1&16383}if((dt<0||msecs>_lastMSecs)&&options.nsecs===undefined){nsecs=0}if(nsecs>=1e4){throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\")}_lastMSecs=msecs;_lastNSecs=nsecs;_clockseq=clockseq;msecs+=122192928e5;var tl=((msecs&268435455)*1e4+nsecs)%4294967296;b[i++]=tl>>>24&255;b[i++]=tl>>>16&255;b[i++]=tl>>>8&255;b[i++]=tl&255;var tmh=msecs/4294967296*1e4&268435455;b[i++]=tmh>>>8&255;b[i++]=tmh&255;b[i++]=tmh>>>24&15|16;b[i++]=tmh>>>16&255;b[i++]=clockseq>>>8|128;b[i++]=clockseq&255;var node=options.node||_nodeId;for(var n=0;n<6;n++){b[i+n]=node[n]}return buf?buf:unparse(b)}function v4(options,buf,offset){var i=buf&&offset||0;if(typeof options==\"string\"){buf=options==\"binary\"?new Array(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||_rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;ii++){buf[i+ii]=rnds[ii]}}return buf||unparse(rnds)}var uuid=v4;uuid.v1=v1;uuid.v4=v4;uuid.parse=parse;uuid.unparse=unparse;module.exports=uuid}).call(exports,__webpack_require__(158))},function(module,exports){var g;g=function(){return this}();try{g=g||Function(\"return this\")()||(1,eval)(\"this\")}catch(e){if(typeof window===\"object\")g=window}module.exports=g},function(module,exports,__webpack_require__){\"use strict\";exports.util=__webpack_require__(2);exports.DOMutil=__webpack_require__(14);exports.DataSet=__webpack_require__(11);exports.DataView=__webpack_require__(12);exports.Queue=__webpack_require__(43);exports.Graph3d=__webpack_require__(161);exports.graph3d={Camera:__webpack_require__(95),Filter:__webpack_require__(96),Point2d:__webpack_require__(91),Point3d:__webpack_require__(34),Slider:__webpack_require__(92),StepNumber:__webpack_require__(93)};exports.moment=__webpack_require__(9);exports.Hammer=__webpack_require__(10);exports.keycharm=__webpack_require__(35)},function(module,exports,__webpack_require__){var core=__webpack_require__(7);var $JSON=core.JSON||(core.JSON={stringify:JSON.stringify});module.exports=function stringify(it){return $JSON.stringify.apply($JSON,arguments)}},function(module,exports,__webpack_require__){\"use strict\";var _assign=__webpack_require__(90);var _assign2=_interopRequireDefault(_assign);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Emitter=__webpack_require__(44);var util=__webpack_require__(2);var Point3d=__webpack_require__(34);var Point2d=__webpack_require__(91);var Slider=__webpack_require__(92);var StepNumber=__webpack_require__(93);var Settings=__webpack_require__(94);var Validator=__webpack_require__(15)[\"default\"];var _require=__webpack_require__(15),printStyle=_require.printStyle;var _require2=__webpack_require__(172),allOptions=_require2.allOptions;var DataGroup=__webpack_require__(173);Graph3d.STYLE=Settings.STYLE;var autoByDefault=undefined;Graph3d.DEFAULTS={width:\"400px\",height:\"400px\",filterLabel:\"time\",legendLabel:\"value\",xLabel:\"x\",yLabel:\"y\",zLabel:\"z\",xValueLabel:function xValueLabel(v){return v},yValueLabel:function yValueLabel(v){return v},zValueLabel:function zValueLabel(v){return v},showXAxis:true,showYAxis:true,showZAxis:true,showGrid:true,showPerspective:true,showShadow:false,keepAspectRatio:true,verticalRatio:.5,dotSizeRatio:.02,dotSizeMinFraction:.5,dotSizeMaxFraction:2.5,showAnimationControls:autoByDefault,animationInterval:1e3,animationPreload:false,animationAutoStart:autoByDefault,axisColor:\"#4D4D4D\",gridColor:\"#D3D3D3\",xCenter:\"55%\",yCenter:\"50%\",style:Graph3d.STYLE.DOT,tooltip:false,tooltipStyle:{content:{padding:\"10px\",border:\"1px solid #4d4d4d\",color:\"#1a1a1a\",background:\"rgba(255,255,255,0.7)\",borderRadius:\"2px\",boxShadow:\"5px 5px 10px rgba(128,128,128,0.5)\"},line:{height:\"40px\",width:\"0\",borderLeft:\"1px solid #4d4d4d\"},dot:{height:\"0\",width:\"0\",border:\"5px solid #4d4d4d\",borderRadius:\"5px\"}},dataColor:{fill:\"#7DC1FF\",stroke:\"#3267D2\",strokeWidth:1},cameraPosition:{horizontal:1,vertical:.5,distance:1.7},showLegend:autoByDefault,backgroundColor:autoByDefault,xBarWidth:autoByDefault,yBarWidth:autoByDefault,valueMin:autoByDefault,valueMax:autoByDefault,xMin:autoByDefault,xMax:autoByDefault,xStep:autoByDefault,yMin:autoByDefault,yMax:autoByDefault,yStep:autoByDefault,zMin:autoByDefault,zMax:autoByDefault,zStep:autoByDefault};function Graph3d(container,data,options){if(!(this instanceof Graph3d)){throw new SyntaxError(\"Constructor must be called with the new operator\")}this.containerElement=container;this.dataGroup=new DataGroup;this.dataPoints=null;this.create();Settings.setDefaults(Graph3d.DEFAULTS,this);this.colX=undefined;this.colY=undefined;this.colZ=undefined;this.colValue=undefined;this.setOptions(options);this.setData(data)}Emitter(Graph3d.prototype);Graph3d.prototype._setScale=function(){this.scale=new Point3d(1/this.xRange.range(),1/this.yRange.range(),1/this.zRange.range());if(this.keepAspectRatio){if(this.scale.x<this.scale.y){this.scale.y=this.scale.x}else{this.scale.x=this.scale.y}}this.scale.z*=this.verticalRatio;if(this.valueRange!==undefined){this.scale.value=1/this.valueRange.range()}var xCenter=this.xRange.center()*this.scale.x;var yCenter=this.yRange.center()*this.scale.y;var zCenter=this.zRange.center()*this.scale.z;this.camera.setArmLocation(xCenter,yCenter,zCenter)};Graph3d.prototype._convert3Dto2D=function(point3d){var translation=this._convertPointToTranslation(point3d);return this._convertTranslationToScreen(translation)};Graph3d.prototype._convertPointToTranslation=function(point3d){var cameraLocation=this.camera.getCameraLocation(),cameraRotation=this.camera.getCameraRotation(),ax=point3d.x*this.scale.x,ay=point3d.y*this.scale.y,az=point3d.z*this.scale.z,cx=cameraLocation.x,cy=cameraLocation.y,cz=cameraLocation.z,sinTx=Math.sin(cameraRotation.x),cosTx=Math.cos(cameraRotation.x),sinTy=Math.sin(cameraRotation.y),cosTy=Math.cos(cameraRotation.y),sinTz=Math.sin(cameraRotation.z),cosTz=Math.cos(cameraRotation.z),dx=cosTy*(sinTz*(ay-cy)+cosTz*(ax-cx))-sinTy*(az-cz),dy=sinTx*(cosTy*(az-cz)+sinTy*(sinTz*(ay-cy)+cosTz*(ax-cx)))+cosTx*(cosTz*(ay-cy)-sinTz*(ax-cx)),dz=cosTx*(cosTy*(az-cz)+sinTy*(sinTz*(ay-cy)+cosTz*(ax-cx)))-sinTx*(cosTz*(ay-cy)-sinTz*(ax-cx));return new Point3d(dx,dy,dz)};Graph3d.prototype._convertTranslationToScreen=function(translation){var ex=this.eye.x,ey=this.eye.y,ez=this.eye.z,dx=translation.x,dy=translation.y,dz=translation.z;var bx;var by;if(this.showPerspective){bx=(dx-ex)*(ez/dz);by=(dy-ey)*(ez/dz)}else{bx=dx*-(ez/this.camera.getArmLength());by=dy*-(ez/this.camera.getArmLength())}return new Point2d(this.currentXCenter+bx*this.frame.canvas.clientWidth,this.currentYCenter-by*this.frame.canvas.clientWidth)};Graph3d.prototype._calcTranslations=function(points){for(var i=0;i<points.length;i++){var point=points[i];point.trans=this._convertPointToTranslation(point.point);point.screen=this._convertTranslationToScreen(point.trans);var transBottom=this._convertPointToTranslation(point.bottom);point.dist=this.showPerspective?transBottom.length():-transBottom.z}var sortDepth=function sortDepth(a,b){return b.dist-a.dist};points.sort(sortDepth)};Graph3d.prototype._initializeRanges=function(){var dg=this.dataGroup;this.xRange=dg.xRange;this.yRange=dg.yRange;this.zRange=dg.zRange;this.valueRange=dg.valueRange;this.xStep=dg.xStep;this.yStep=dg.yStep;this.zStep=dg.zStep;this.xBarWidth=dg.xBarWidth;this.yBarWidth=dg.yBarWidth;this.colX=dg.colX;this.colY=dg.colY;this.colZ=dg.colZ;this.colValue=dg.colValue;this._setScale()};Graph3d.prototype.getDataPoints=function(data){var dataPoints=[];for(var i=0;i<data.length;i++){var point=new Point3d;point.x=data[i][this.colX]||0;point.y=data[i][this.colY]||0;point.z=data[i][this.colZ]||0;point.data=data[i];if(this.colValue!==undefined){point.value=data[i][this.colValue]||0}var obj={};obj.point=point;obj.bottom=new Point3d(point.x,point.y,this.zRange.min);obj.trans=undefined;obj.screen=undefined;dataPoints.push(obj)}return dataPoints};Graph3d.prototype._getDataPoints=function(data){var x,y,i,obj;var dataPoints=[];if(this.style===Graph3d.STYLE.GRID||this.style===Graph3d.STYLE.SURFACE){var dataX=this.dataGroup.getDistinctValues(this.colX,data);var dataY=this.dataGroup.getDistinctValues(this.colY,data);dataPoints=this.getDataPoints(data);var dataMatrix=[];for(i=0;i<dataPoints.length;i++){obj=dataPoints[i];var xIndex=dataX.indexOf(obj.point.x);var yIndex=dataY.indexOf(obj.point.y);if(dataMatrix[xIndex]===undefined){dataMatrix[xIndex]=[]}dataMatrix[xIndex][yIndex]=obj}for(x=0;x<dataMatrix.length;x++){for(y=0;y<dataMatrix[x].length;y++){if(dataMatrix[x][y]){dataMatrix[x][y].pointRight=x<dataMatrix.length-1?dataMatrix[x+1][y]:undefined;dataMatrix[x][y].pointTop=y<dataMatrix[x].length-1?dataMatrix[x][y+1]:undefined;dataMatrix[x][y].pointCross=x<dataMatrix.length-1&&y<dataMatrix[x].length-1?dataMatrix[x+1][y+1]:undefined}}}}else{this._checkValueField(data);dataPoints=this.getDataPoints(data);if(this.style===Graph3d.STYLE.LINE){for(i=0;i<dataPoints.length;i++){if(i>0){dataPoints[i-1].pointNext=dataPoints[i]}}}}return dataPoints};Graph3d.prototype.create=function(){while(this.containerElement.hasChildNodes()){this.containerElement.removeChild(this.containerElement.firstChild)}this.frame=document.createElement(\"div\");this.frame.style.position=\"relative\";this.frame.style.overflow=\"hidden\";this.frame.canvas=document.createElement(\"canvas\");this.frame.canvas.style.position=\"relative\";this.frame.appendChild(this.frame.canvas);{var noCanvas=document.createElement(\"DIV\");noCanvas.style.color=\"red\";noCanvas.style.fontWeight=\"bold\";noCanvas.style.padding=\"10px\";noCanvas.innerHTML=\"Error: your browser does not support HTML canvas\";this.frame.canvas.appendChild(noCanvas)}this.frame.filter=document.createElement(\"div\");this.frame.filter.style.position=\"absolute\";this.frame.filter.style.bottom=\"0px\";this.frame.filter.style.left=\"0px\";this.frame.filter.style.width=\"100%\";this.frame.appendChild(this.frame.filter);var me=this;var onmousedown=function onmousedown(event){me._onMouseDown(event)};var ontouchstart=function ontouchstart(event){me._onTouchStart(event)};var onmousewheel=function onmousewheel(event){me._onWheel(event)};var ontooltip=function ontooltip(event){me._onTooltip(event)};var onclick=function onclick(event){me._onClick(event)};util.addEventListener(this.frame.canvas,\"mousedown\",onmousedown);util.addEventListener(this.frame.canvas,\"touchstart\",ontouchstart);util.addEventListener(this.frame.canvas,\"mousewheel\",onmousewheel);util.addEventListener(this.frame.canvas,\"mousemove\",ontooltip);util.addEventListener(this.frame.canvas,\"click\",onclick);this.containerElement.appendChild(this.frame)};Graph3d.prototype._setSize=function(width,height){this.frame.style.width=width;this.frame.style.height=height;this._resizeCanvas()};Graph3d.prototype._resizeCanvas=function(){this.frame.canvas.style.width=\"100%\";this.frame.canvas.style.height=\"100%\";this.frame.canvas.width=this.frame.canvas.clientWidth;this.frame.canvas.height=this.frame.canvas.clientHeight;this.frame.filter.style.width=this.frame.canvas.clientWidth-2*10+\"px\"};Graph3d.prototype.animationStart=function(){if(!this.animationAutoStart||!this.dataGroup.dataFilter)return;if(!this.frame.filter||!this.frame.filter.slider)throw new Error(\"No animation available\");this.frame.filter.slider.play()};Graph3d.prototype.animationStop=function(){if(!this.frame.filter||!this.frame.filter.slider)return;this.frame.filter.slider.stop()};Graph3d.prototype._resizeCenter=function(){if(this.xCenter.charAt(this.xCenter.length-1)===\"%\"){this.currentXCenter=parseFloat(this.xCenter)/100*this.frame.canvas.clientWidth}else{this.currentXCenter=parseFloat(this.xCenter)}if(this.yCenter.charAt(this.yCenter.length-1)===\"%\"){this.currentYCenter=parseFloat(this.yCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight)}else{this.currentYCenter=parseFloat(this.yCenter)}};Graph3d.prototype.getCameraPosition=function(){var pos=this.camera.getArmRotation();pos.distance=this.camera.getArmLength();return pos};Graph3d.prototype._readData=function(data){this.dataPoints=this.dataGroup.initializeData(this,data,this.style);this._initializeRanges();this._redrawFilter()};Graph3d.prototype.setData=function(data){if(data===undefined||data===null)return;this._readData(data);this.redraw();this.animationStart()};Graph3d.prototype.setOptions=function(options){if(options===undefined)return;var errorFound=Validator.validate(options,allOptions);if(errorFound===true){console.log(\"%cErrors have been found in the supplied options object.\",printStyle)}this.animationStop();Settings.setOptions(options,this);this.setPointDrawingMethod();this._setSize(this.width,this.height);this.setData(this.dataGroup.getDataTable());this.animationStart()};Graph3d.prototype.setPointDrawingMethod=function(){var method=undefined;switch(this.style){case Graph3d.STYLE.BAR:method=Graph3d.prototype._redrawBarGraphPoint;break;case Graph3d.STYLE.BARCOLOR:method=Graph3d.prototype._redrawBarColorGraphPoint;break;case Graph3d.STYLE.BARSIZE:method=Graph3d.prototype._redrawBarSizeGraphPoint;break;case Graph3d.STYLE.DOT:method=Graph3d.prototype._redrawDotGraphPoint;break;case Graph3d.STYLE.DOTLINE:method=Graph3d.prototype._redrawDotLineGraphPoint;break;case Graph3d.STYLE.DOTCOLOR:method=Graph3d.prototype._redrawDotColorGraphPoint;break;case Graph3d.STYLE.DOTSIZE:method=Graph3d.prototype._redrawDotSizeGraphPoint;break;case Graph3d.STYLE.SURFACE:method=Graph3d.prototype._redrawSurfaceGraphPoint;break;case Graph3d.STYLE.GRID:method=Graph3d.prototype._redrawGridGraphPoint;break;case Graph3d.STYLE.LINE:method=Graph3d.prototype._redrawLineGraphPoint;break;default:throw new Error(\"Can not determine point drawing method \"+\"for graph style '\"+this.style+\"'\")}this._pointDrawingMethod=method};Graph3d.prototype.redraw=function(){if(this.dataPoints===undefined){throw new Error(\"Graph data not initialized\")}this._resizeCanvas();this._resizeCenter();this._redrawSlider();this._redrawClear();this._redrawAxis();this._redrawDataGraph();this._redrawInfo();this._redrawLegend()};Graph3d.prototype._getContext=function(){var canvas=this.frame.canvas;var ctx=canvas.getContext(\"2d\");ctx.lineJoin=\"round\";ctx.lineCap=\"round\";return ctx};Graph3d.prototype._redrawClear=function(){var canvas=this.frame.canvas;var ctx=canvas.getContext(\"2d\");ctx.clearRect(0,0,canvas.width,canvas.height)};Graph3d.prototype._dotSize=function(){return this.frame.clientWidth*this.dotSizeRatio};Graph3d.prototype._getLegendWidth=function(){var width;if(this.style===Graph3d.STYLE.DOTSIZE){var dotSize=this._dotSize();width=dotSize*this.dotSizeMaxFraction}else if(this.style===Graph3d.STYLE.BARSIZE){width=this.xBarWidth}else{width=20}return width};Graph3d.prototype._redrawLegend=function(){if(this.showLegend!==true){return}if(this.style===Graph3d.STYLE.LINE||this.style===Graph3d.STYLE.BARSIZE){return}var isSizeLegend=this.style===Graph3d.STYLE.BARSIZE||this.style===Graph3d.STYLE.DOTSIZE;var isValueLegend=this.style===Graph3d.STYLE.DOTSIZE||this.style===Graph3d.STYLE.DOTCOLOR||this.style===Graph3d.STYLE.BARCOLOR;var height=Math.max(this.frame.clientHeight*.25,100);var top=this.margin;var width=this._getLegendWidth();var right=this.frame.clientWidth-this.margin;var left=right-width;var bottom=top+height;var ctx=this._getContext();ctx.lineWidth=1;ctx.font=\"14px arial\";if(isSizeLegend===false){var ymin=0;var ymax=height;var y;for(y=ymin;y<ymax;y++){var f=(y-ymin)/(ymax-ymin);var hue=f*240;var color=this._hsv2rgb(hue,1,1);ctx.strokeStyle=color;ctx.beginPath();ctx.moveTo(left,top+y);ctx.lineTo(right,top+y);ctx.stroke()}ctx.strokeStyle=this.axisColor;ctx.strokeRect(left,top,width,height)}else{var widthMin;if(this.style===Graph3d.STYLE.DOTSIZE){widthMin=width*(this.dotSizeMinFraction/this.dotSizeMaxFraction)}else if(this.style===Graph3d.STYLE.BARSIZE){}ctx.strokeStyle=this.axisColor;ctx.fillStyle=this.dataColor.fill;ctx.beginPath();ctx.moveTo(left,top);ctx.lineTo(right,top);ctx.lineTo(left+widthMin,bottom);ctx.lineTo(left,bottom);ctx.closePath();ctx.fill();ctx.stroke()}var gridLineLen=5;var legendMin=isValueLegend?this.valueRange.min:this.zRange.min;var legendMax=isValueLegend?this.valueRange.max:this.zRange.max;var step=new StepNumber(legendMin,legendMax,(legendMax-legendMin)/5,true);step.start(true);var from;var to;while(!step.end()){y=bottom-(step.getCurrent()-legendMin)/(legendMax-legendMin)*height;from=new Point2d(left-gridLineLen,y);to=new Point2d(left,y);this._line(ctx,from,to);ctx.textAlign=\"right\";ctx.textBaseline=\"middle\";ctx.fillStyle=this.axisColor;ctx.fillText(step.getCurrent(),left-2*gridLineLen,y);step.next()}ctx.textAlign=\"right\";ctx.textBaseline=\"top\";var label=this.legendLabel;ctx.fillText(label,right,bottom+this.margin)};Graph3d.prototype._redrawFilter=function(){var dataFilter=this.dataGroup.dataFilter;var filter=this.frame.filter;filter.innerHTML=\"\";if(!dataFilter){filter.slider=undefined;return}var options={visible:this.showAnimationControls};var slider=new Slider(filter,options);filter.slider=slider;filter.style.padding=\"10px\";slider.setValues(dataFilter.values);slider.setPlayInterval(this.animationInterval);var me=this;var onchange=function onchange(){var dataFilter=me.dataGroup.dataFilter;var index=slider.getIndex();dataFilter.selectValue(index);me.dataPoints=dataFilter._getDataPoints();me.redraw()};slider.setOnChangeCallback(onchange)};Graph3d.prototype._redrawSlider=function(){if(this.frame.filter.slider!==undefined){this.frame.filter.slider.redraw()}};Graph3d.prototype._redrawInfo=function(){var info=this.dataGroup.getInfo();if(info===undefined)return;var ctx=this._getContext();ctx.font=\"14px arial\";ctx.lineStyle=\"gray\";ctx.fillStyle=\"gray\";ctx.textAlign=\"left\";ctx.textBaseline=\"top\";var x=this.margin;var y=this.margin;ctx.fillText(info,x,y)};Graph3d.prototype._line=function(ctx,from,to,strokeStyle){if(strokeStyle!==undefined){ctx.strokeStyle=strokeStyle}ctx.beginPath();ctx.moveTo(from.x,from.y);ctx.lineTo(to.x,to.y);ctx.stroke()};Graph3d.prototype.drawAxisLabelX=function(ctx,point3d,text,armAngle,yMargin){if(yMargin===undefined){yMargin=0}var point2d=this._convert3Dto2D(point3d);if(Math.cos(armAngle*2)>0){ctx.textAlign=\"center\";ctx.textBaseline=\"top\";point2d.y+=yMargin}else if(Math.sin(armAngle*2)<0){ctx.textAlign=\"right\";ctx.textBaseline=\"middle\"}else{ctx.textAlign=\"left\";ctx.textBaseline=\"middle\"}ctx.fillStyle=this.axisColor;ctx.fillText(text,point2d.x,point2d.y)};Graph3d.prototype.drawAxisLabelY=function(ctx,point3d,text,armAngle,yMargin){if(yMargin===undefined){yMargin=0}var point2d=this._convert3Dto2D(point3d);if(Math.cos(armAngle*2)<0){ctx.textAlign=\"center\";ctx.textBaseline=\"top\";point2d.y+=yMargin}else if(Math.sin(armAngle*2)>0){ctx.textAlign=\"right\";ctx.textBaseline=\"middle\"}else{ctx.textAlign=\"left\";ctx.textBaseline=\"middle\"}ctx.fillStyle=this.axisColor;ctx.fillText(text,point2d.x,point2d.y)};Graph3d.prototype.drawAxisLabelZ=function(ctx,point3d,text,offset){if(offset===undefined){offset=0}var point2d=this._convert3Dto2D(point3d);ctx.textAlign=\"right\";ctx.textBaseline=\"middle\";ctx.fillStyle=this.axisColor;ctx.fillText(text,point2d.x-offset,point2d.y)};Graph3d.prototype._line3d=function(ctx,from,to,strokeStyle){var from2d=this._convert3Dto2D(from);var to2d=this._convert3Dto2D(to);this._line(ctx,from2d,to2d,strokeStyle)};Graph3d.prototype._redrawAxis=function(){var ctx=this._getContext(),from,to,step,prettyStep,text,xText,yText,zText,offset,xOffset,yOffset;ctx.font=24/this.camera.getArmLength()+\"px arial\";var gridLenX=.025/this.scale.x;var gridLenY=.025/this.scale.y;var textMargin=5/this.camera.getArmLength();var armAngle=this.camera.getArmRotation().horizontal;var armVector=new Point2d(Math.cos(armAngle),Math.sin(armAngle));var xRange=this.xRange;var yRange=this.yRange;var zRange=this.zRange;var point3d;ctx.lineWidth=1;prettyStep=this.defaultXStep===undefined;step=new StepNumber(xRange.min,xRange.max,this.xStep,prettyStep);step.start(true);while(!step.end()){var x=step.getCurrent();if(this.showGrid){from=new Point3d(x,yRange.min,zRange.min);to=new Point3d(x,yRange.max,zRange.min);this._line3d(ctx,from,to,this.gridColor)}else if(this.showXAxis){from=new Point3d(x,yRange.min,zRange.min);to=new Point3d(x,yRange.min+gridLenX,zRange.min);this._line3d(ctx,from,to,this.axisColor);from=new Point3d(x,yRange.max,zRange.min);to=new Point3d(x,yRange.max-gridLenX,zRange.min);this._line3d(ctx,from,to,this.axisColor)}if(this.showXAxis){yText=armVector.x>0?yRange.min:yRange.max;point3d=new Point3d(x,yText,zRange.min);var msg=\" \"+this.xValueLabel(x)+\" \";this.drawAxisLabelX(ctx,point3d,msg,armAngle,textMargin)}step.next()}ctx.lineWidth=1;prettyStep=this.defaultYStep===undefined;step=new StepNumber(yRange.min,yRange.max,this.yStep,prettyStep);step.start(true);while(!step.end()){var y=step.getCurrent();if(this.showGrid){from=new Point3d(xRange.min,y,zRange.min);to=new Point3d(xRange.max,y,zRange.min);this._line3d(ctx,from,to,this.gridColor)}else if(this.showYAxis){from=new Point3d(xRange.min,y,zRange.min);to=new Point3d(xRange.min+gridLenY,y,zRange.min);this._line3d(ctx,from,to,this.axisColor);from=new Point3d(xRange.max,y,zRange.min);to=new Point3d(xRange.max-gridLenY,y,zRange.min);this._line3d(ctx,from,to,this.axisColor)}if(this.showYAxis){xText=armVector.y>0?xRange.min:xRange.max;point3d=new Point3d(xText,y,zRange.min);var _msg=\" \"+this.yValueLabel(y)+\" \";this.drawAxisLabelY(ctx,point3d,_msg,armAngle,textMargin)}step.next()}if(this.showZAxis){ctx.lineWidth=1;prettyStep=this.defaultZStep===undefined;step=new StepNumber(zRange.min,zRange.max,this.zStep,prettyStep);step.start(true);xText=armVector.x>0?xRange.min:xRange.max;yText=armVector.y<0?yRange.min:yRange.max;while(!step.end()){var z=step.getCurrent();var from3d=new Point3d(xText,yText,z);var from2d=this._convert3Dto2D(from3d);to=new Point2d(from2d.x-textMargin,from2d.y);this._line(ctx,from2d,to,this.axisColor);var _msg2=this.zValueLabel(z)+\" \";this.drawAxisLabelZ(ctx,from3d,_msg2,5);step.next()}ctx.lineWidth=1;from=new Point3d(xText,yText,zRange.min);to=new Point3d(xText,yText,zRange.max);this._line3d(ctx,from,to,this.axisColor)}if(this.showXAxis){var xMin2d;var xMax2d;ctx.lineWidth=1;xMin2d=new Point3d(xRange.min,yRange.min,zRange.min);xMax2d=new Point3d(xRange.max,yRange.min,zRange.min);this._line3d(ctx,xMin2d,xMax2d,this.axisColor);xMin2d=new Point3d(xRange.min,yRange.max,zRange.min);xMax2d=new Point3d(xRange.max,yRange.max,zRange.min);this._line3d(ctx,xMin2d,xMax2d,this.axisColor)}if(this.showYAxis){ctx.lineWidth=1;from=new Point3d(xRange.min,yRange.min,zRange.min);to=new Point3d(xRange.min,yRange.max,zRange.min);this._line3d(ctx,from,to,this.axisColor);from=new Point3d(xRange.max,yRange.min,zRange.min);to=new Point3d(xRange.max,yRange.max,zRange.min);this._line3d(ctx,from,to,this.axisColor)}var xLabel=this.xLabel;if(xLabel.length>0&&this.showXAxis){yOffset=.1/this.scale.y;xText=(xRange.max+3*xRange.min)/4;yText=armVector.x>0?yRange.min-yOffset:yRange.max+yOffset\n;text=new Point3d(xText,yText,zRange.min);this.drawAxisLabelX(ctx,text,xLabel,armAngle)}var yLabel=this.yLabel;if(yLabel.length>0&&this.showYAxis){xOffset=.1/this.scale.x;xText=armVector.y>0?xRange.min-xOffset:xRange.max+xOffset;yText=(yRange.max+3*yRange.min)/4;text=new Point3d(xText,yText,zRange.min);this.drawAxisLabelY(ctx,text,yLabel,armAngle)}var zLabel=this.zLabel;if(zLabel.length>0&&this.showZAxis){offset=30;xText=armVector.x>0?xRange.min:xRange.max;yText=armVector.y<0?yRange.min:yRange.max;zText=(zRange.max+3*zRange.min)/4;text=new Point3d(xText,yText,zText);this.drawAxisLabelZ(ctx,text,zLabel,offset)}};Graph3d.prototype._hsv2rgb=function(H,S,V){var R,G,B,C,Hi,X;C=V*S;Hi=Math.floor(H/60);X=C*(1-Math.abs(H/60%2-1));switch(Hi){case 0:R=C;G=X;B=0;break;case 1:R=X;G=C;B=0;break;case 2:R=0;G=C;B=X;break;case 3:R=0;G=X;B=C;break;case 4:R=X;G=0;B=C;break;case 5:R=C;G=0;B=X;break;default:R=0;G=0;B=0;break}return\"RGB(\"+parseInt(R*255)+\",\"+parseInt(G*255)+\",\"+parseInt(B*255)+\")\"};Graph3d.prototype._getStrokeWidth=function(point){if(point!==undefined){if(this.showPerspective){return 1/-point.trans.z*this.dataColor.strokeWidth}else{return-(this.eye.z/this.camera.getArmLength())*this.dataColor.strokeWidth}}return this.dataColor.strokeWidth};Graph3d.prototype._redrawBar=function(ctx,point,xWidth,yWidth,color,borderColor){var surface;var me=this;var point3d=point.point;var zMin=this.zRange.min;var top=[{point:new Point3d(point3d.x-xWidth,point3d.y-yWidth,point3d.z)},{point:new Point3d(point3d.x+xWidth,point3d.y-yWidth,point3d.z)},{point:new Point3d(point3d.x+xWidth,point3d.y+yWidth,point3d.z)},{point:new Point3d(point3d.x-xWidth,point3d.y+yWidth,point3d.z)}];var bottom=[{point:new Point3d(point3d.x-xWidth,point3d.y-yWidth,zMin)},{point:new Point3d(point3d.x+xWidth,point3d.y-yWidth,zMin)},{point:new Point3d(point3d.x+xWidth,point3d.y+yWidth,zMin)},{point:new Point3d(point3d.x-xWidth,point3d.y+yWidth,zMin)}];top.forEach(function(obj){obj.screen=me._convert3Dto2D(obj.point)});bottom.forEach(function(obj){obj.screen=me._convert3Dto2D(obj.point)});var surfaces=[{corners:top,center:Point3d.avg(bottom[0].point,bottom[2].point)},{corners:[top[0],top[1],bottom[1],bottom[0]],center:Point3d.avg(bottom[1].point,bottom[0].point)},{corners:[top[1],top[2],bottom[2],bottom[1]],center:Point3d.avg(bottom[2].point,bottom[1].point)},{corners:[top[2],top[3],bottom[3],bottom[2]],center:Point3d.avg(bottom[3].point,bottom[2].point)},{corners:[top[3],top[0],bottom[0],bottom[3]],center:Point3d.avg(bottom[0].point,bottom[3].point)}];point.surfaces=surfaces;for(var j=0;j<surfaces.length;j++){surface=surfaces[j];var transCenter=this._convertPointToTranslation(surface.center);surface.dist=this.showPerspective?transCenter.length():-transCenter.z}surfaces.sort(function(a,b){var diff=b.dist-a.dist;if(diff)return diff;if(a.corners===top)return 1;if(b.corners===top)return-1;return 0});ctx.lineWidth=this._getStrokeWidth(point);ctx.strokeStyle=borderColor;ctx.fillStyle=color;for(var _j=2;_j<surfaces.length;_j++){surface=surfaces[_j];this._polygon(ctx,surface.corners)}};Graph3d.prototype._polygon=function(ctx,points,fillStyle,strokeStyle){if(points.length<2){return}if(fillStyle!==undefined){ctx.fillStyle=fillStyle}if(strokeStyle!==undefined){ctx.strokeStyle=strokeStyle}ctx.beginPath();ctx.moveTo(points[0].screen.x,points[0].screen.y);for(var i=1;i<points.length;++i){var point=points[i];ctx.lineTo(point.screen.x,point.screen.y)}ctx.closePath();ctx.fill();ctx.stroke()};Graph3d.prototype._drawCircle=function(ctx,point,color,borderColor,size){var radius=this._calcRadius(point,size);ctx.lineWidth=this._getStrokeWidth(point);ctx.strokeStyle=borderColor;ctx.fillStyle=color;ctx.beginPath();ctx.arc(point.screen.x,point.screen.y,radius,0,Math.PI*2,true);ctx.fill();ctx.stroke()};Graph3d.prototype._getColorsRegular=function(point){var hue=(1-(point.point.z-this.zRange.min)*this.scale.z/this.verticalRatio)*240;var color=this._hsv2rgb(hue,1,1);var borderColor=this._hsv2rgb(hue,1,.8);return{fill:color,border:borderColor}};Graph3d.prototype._getColorsColor=function(point){var color,borderColor;if(typeof point.point.value===\"string\"){color=point.point.value;borderColor=point.point.value}else{var hue=(1-(point.point.value-this.valueRange.min)*this.scale.value)*240;color=this._hsv2rgb(hue,1,1);borderColor=this._hsv2rgb(hue,1,.8)}return{fill:color,border:borderColor}};Graph3d.prototype._getColorsSize=function(){return{fill:this.dataColor.fill,border:this.dataColor.stroke}};Graph3d.prototype._calcRadius=function(point,size){if(size===undefined){size=this._dotSize()}var radius;if(this.showPerspective){radius=size/-point.trans.z}else{radius=size*-(this.eye.z/this.camera.getArmLength())}if(radius<0){radius=0}return radius};Graph3d.prototype._redrawBarGraphPoint=function(ctx,point){var xWidth=this.xBarWidth/2;var yWidth=this.yBarWidth/2;var colors=this._getColorsRegular(point);this._redrawBar(ctx,point,xWidth,yWidth,colors.fill,colors.border)};Graph3d.prototype._redrawBarColorGraphPoint=function(ctx,point){var xWidth=this.xBarWidth/2;var yWidth=this.yBarWidth/2;var colors=this._getColorsColor(point);this._redrawBar(ctx,point,xWidth,yWidth,colors.fill,colors.border)};Graph3d.prototype._redrawBarSizeGraphPoint=function(ctx,point){var fraction=(point.point.value-this.valueRange.min)/this.valueRange.range();var xWidth=this.xBarWidth/2*(fraction*.8+.2);var yWidth=this.yBarWidth/2*(fraction*.8+.2);var colors=this._getColorsSize();this._redrawBar(ctx,point,xWidth,yWidth,colors.fill,colors.border)};Graph3d.prototype._redrawDotGraphPoint=function(ctx,point){var colors=this._getColorsRegular(point);this._drawCircle(ctx,point,colors.fill,colors.border)};Graph3d.prototype._redrawDotLineGraphPoint=function(ctx,point){var from=this._convert3Dto2D(point.bottom);ctx.lineWidth=1;this._line(ctx,from,point.screen,this.gridColor);this._redrawDotGraphPoint(ctx,point)};Graph3d.prototype._redrawDotColorGraphPoint=function(ctx,point){var colors=this._getColorsColor(point);this._drawCircle(ctx,point,colors.fill,colors.border)};Graph3d.prototype._redrawDotSizeGraphPoint=function(ctx,point){var dotSize=this._dotSize();var fraction=(point.point.value-this.valueRange.min)/this.valueRange.range();var sizeMin=dotSize*this.dotSizeMinFraction;var sizeRange=dotSize*this.dotSizeMaxFraction-sizeMin;var size=sizeMin+sizeRange*fraction;var colors=this._getColorsSize();this._drawCircle(ctx,point,colors.fill,colors.border,size)};Graph3d.prototype._redrawSurfaceGraphPoint=function(ctx,point){var right=point.pointRight;var top=point.pointTop;var cross=point.pointCross;if(point===undefined||right===undefined||top===undefined||cross===undefined){return}var topSideVisible=true;var fillStyle;var strokeStyle;if(this.showGrayBottom||this.showShadow){var aDiff=Point3d.subtract(cross.trans,point.trans);var bDiff=Point3d.subtract(top.trans,right.trans);var crossproduct=Point3d.crossProduct(aDiff,bDiff);var len=crossproduct.length();topSideVisible=crossproduct.z>0}if(topSideVisible){var zAvg=(point.point.z+right.point.z+top.point.z+cross.point.z)/4;var h=(1-(zAvg-this.zRange.min)*this.scale.z/this.verticalRatio)*240;var s=1;var v;if(this.showShadow){v=Math.min(1+crossproduct.x/len/2,1);fillStyle=this._hsv2rgb(h,s,v);strokeStyle=fillStyle}else{v=1;fillStyle=this._hsv2rgb(h,s,v);strokeStyle=this.axisColor}}else{fillStyle=\"gray\";strokeStyle=this.axisColor}ctx.lineWidth=this._getStrokeWidth(point);var points=[point,right,cross,top];this._polygon(ctx,points,fillStyle,strokeStyle)};Graph3d.prototype._drawGridLine=function(ctx,from,to){if(from===undefined||to===undefined){return}var zAvg=(from.point.z+to.point.z)/2;var h=(1-(zAvg-this.zRange.min)*this.scale.z/this.verticalRatio)*240;ctx.lineWidth=this._getStrokeWidth(from)*2;ctx.strokeStyle=this._hsv2rgb(h,1,1);this._line(ctx,from.screen,to.screen)};Graph3d.prototype._redrawGridGraphPoint=function(ctx,point){this._drawGridLine(ctx,point,point.pointRight);this._drawGridLine(ctx,point,point.pointTop)};Graph3d.prototype._redrawLineGraphPoint=function(ctx,point){if(point.pointNext===undefined){return}ctx.lineWidth=this._getStrokeWidth(point);ctx.strokeStyle=this.dataColor.stroke;this._line(ctx,point.screen,point.pointNext.screen)};Graph3d.prototype._redrawDataGraph=function(){var ctx=this._getContext();var i;if(this.dataPoints===undefined||this.dataPoints.length<=0)return;this._calcTranslations(this.dataPoints);for(i=0;i<this.dataPoints.length;i++){var point=this.dataPoints[i];this._pointDrawingMethod.call(this,ctx,point)}};Graph3d.prototype._storeMousePosition=function(event){this.startMouseX=getMouseX(event);this.startMouseY=getMouseY(event);this._startCameraOffset=this.camera.getOffset()};Graph3d.prototype._onMouseDown=function(event){event=event||window.event;if(this.leftButtonDown){this._onMouseUp(event)}this.leftButtonDown=event.which?event.which===1:event.button===1;if(!this.leftButtonDown&&!this.touchDown)return;this._storeMousePosition(event);this.startStart=new Date(this.start);this.startEnd=new Date(this.end);this.startArmRotation=this.camera.getArmRotation();this.frame.style.cursor=\"move\";var me=this;this.onmousemove=function(event){me._onMouseMove(event)};this.onmouseup=function(event){me._onMouseUp(event)};util.addEventListener(document,\"mousemove\",me.onmousemove);util.addEventListener(document,\"mouseup\",me.onmouseup);util.preventDefault(event)};Graph3d.prototype._onMouseMove=function(event){this.moving=true;event=event||window.event;var diffX=parseFloat(getMouseX(event))-this.startMouseX;var diffY=parseFloat(getMouseY(event))-this.startMouseY;if(event&&event.ctrlKey===true){var scaleX=this.frame.clientWidth*.5;var scaleY=this.frame.clientHeight*.5;var offXNew=(this._startCameraOffset.x||0)-diffX/scaleX*this.camera.armLength*.8;var offYNew=(this._startCameraOffset.y||0)+diffY/scaleY*this.camera.armLength*.8;this.camera.setOffset(offXNew,offYNew);this._storeMousePosition(event)}else{var horizontalNew=this.startArmRotation.horizontal+diffX/200;var verticalNew=this.startArmRotation.vertical+diffY/200;var snapAngle=4;var snapValue=Math.sin(snapAngle/360*2*Math.PI);if(Math.abs(Math.sin(horizontalNew))<snapValue){horizontalNew=Math.round(horizontalNew/Math.PI)*Math.PI-.001}if(Math.abs(Math.cos(horizontalNew))<snapValue){horizontalNew=(Math.round(horizontalNew/Math.PI-.5)+.5)*Math.PI-.001}if(Math.abs(Math.sin(verticalNew))<snapValue){verticalNew=Math.round(verticalNew/Math.PI)*Math.PI}if(Math.abs(Math.cos(verticalNew))<snapValue){verticalNew=(Math.round(verticalNew/Math.PI-.5)+.5)*Math.PI}this.camera.setArmRotation(horizontalNew,verticalNew)}this.redraw();var parameters=this.getCameraPosition();this.emit(\"cameraPositionChange\",parameters);util.preventDefault(event)};Graph3d.prototype._onMouseUp=function(event){this.frame.style.cursor=\"auto\";this.leftButtonDown=false;util.removeEventListener(document,\"mousemove\",this.onmousemove);util.removeEventListener(document,\"mouseup\",this.onmouseup);util.preventDefault(event)};Graph3d.prototype._onClick=function(event){if(!this.onclick_callback)return;if(!this.moving){var boundingRect=this.frame.getBoundingClientRect();var mouseX=getMouseX(event)-boundingRect.left;var mouseY=getMouseY(event)-boundingRect.top;var dataPoint=this._dataPointFromXY(mouseX,mouseY);if(dataPoint)this.onclick_callback(dataPoint.point.data)}else{this.moving=false}util.preventDefault(event)};Graph3d.prototype._onTooltip=function(event){var delay=300;var boundingRect=this.frame.getBoundingClientRect();var mouseX=getMouseX(event)-boundingRect.left;var mouseY=getMouseY(event)-boundingRect.top;if(!this.showTooltip){return}if(this.tooltipTimeout){clearTimeout(this.tooltipTimeout)}if(this.leftButtonDown){this._hideTooltip();return}if(this.tooltip&&this.tooltip.dataPoint){var dataPoint=this._dataPointFromXY(mouseX,mouseY);if(dataPoint!==this.tooltip.dataPoint){if(dataPoint){this._showTooltip(dataPoint)}else{this._hideTooltip()}}}else{var me=this;this.tooltipTimeout=setTimeout(function(){me.tooltipTimeout=null;var dataPoint=me._dataPointFromXY(mouseX,mouseY);if(dataPoint){me._showTooltip(dataPoint)}},delay)}};Graph3d.prototype._onTouchStart=function(event){this.touchDown=true;var me=this;this.ontouchmove=function(event){me._onTouchMove(event)};this.ontouchend=function(event){me._onTouchEnd(event)};util.addEventListener(document,\"touchmove\",me.ontouchmove);util.addEventListener(document,\"touchend\",me.ontouchend);this._onMouseDown(event)};Graph3d.prototype._onTouchMove=function(event){this._onMouseMove(event)};Graph3d.prototype._onTouchEnd=function(event){this.touchDown=false;util.removeEventListener(document,\"touchmove\",this.ontouchmove);util.removeEventListener(document,\"touchend\",this.ontouchend);this._onMouseUp(event)};Graph3d.prototype._onWheel=function(event){if(!event)event=window.event;var delta=0;if(event.wheelDelta){delta=event.wheelDelta/120}else if(event.detail){delta=-event.detail/3}if(delta){var oldLength=this.camera.getArmLength();var newLength=oldLength*(1-delta/10);this.camera.setArmLength(newLength);this.redraw();this._hideTooltip()}var parameters=this.getCameraPosition();this.emit(\"cameraPositionChange\",parameters);util.preventDefault(event)};Graph3d.prototype._insideTriangle=function(point,triangle){var a=triangle[0],b=triangle[1],c=triangle[2];function sign(x){return x>0?1:x<0?-1:0}var as=sign((b.x-a.x)*(point.y-a.y)-(b.y-a.y)*(point.x-a.x));var bs=sign((c.x-b.x)*(point.y-b.y)-(c.y-b.y)*(point.x-b.x));var cs=sign((a.x-c.x)*(point.y-c.y)-(a.y-c.y)*(point.x-c.x));return(as==0||bs==0||as==bs)&&(bs==0||cs==0||bs==cs)&&(as==0||cs==0||as==cs)};Graph3d.prototype._dataPointFromXY=function(x,y){var i,distMax=100,dataPoint=null,closestDataPoint=null,closestDist=null,center=new Point2d(x,y);if(this.style===Graph3d.STYLE.BAR||this.style===Graph3d.STYLE.BARCOLOR||this.style===Graph3d.STYLE.BARSIZE){for(i=this.dataPoints.length-1;i>=0;i--){dataPoint=this.dataPoints[i];var surfaces=dataPoint.surfaces;if(surfaces){for(var s=surfaces.length-1;s>=0;s--){var surface=surfaces[s];var corners=surface.corners;var triangle1=[corners[0].screen,corners[1].screen,corners[2].screen];var triangle2=[corners[2].screen,corners[3].screen,corners[0].screen];if(this._insideTriangle(center,triangle1)||this._insideTriangle(center,triangle2)){return dataPoint}}}}}else{for(i=0;i<this.dataPoints.length;i++){dataPoint=this.dataPoints[i];var point=dataPoint.screen;if(point){var distX=Math.abs(x-point.x);var distY=Math.abs(y-point.y);var dist=Math.sqrt(distX*distX+distY*distY);if((closestDist===null||dist<closestDist)&&dist<distMax){closestDist=dist;closestDataPoint=dataPoint}}}}return closestDataPoint};Graph3d.prototype.hasBars=function(style){return style==Graph3d.STYLE.BAR||style==Graph3d.STYLE.BARCOLOR||style==Graph3d.STYLE.BARSIZE};Graph3d.prototype._showTooltip=function(dataPoint){var content,line,dot;if(!this.tooltip){content=document.createElement(\"div\");(0,_assign2[\"default\"])(content.style,{},this.tooltipStyle.content);content.style.position=\"absolute\";line=document.createElement(\"div\");(0,_assign2[\"default\"])(line.style,{},this.tooltipStyle.line);line.style.position=\"absolute\";dot=document.createElement(\"div\");(0,_assign2[\"default\"])(dot.style,{},this.tooltipStyle.dot);dot.style.position=\"absolute\";this.tooltip={dataPoint:null,dom:{content:content,line:line,dot:dot}}}else{content=this.tooltip.dom.content;line=this.tooltip.dom.line;dot=this.tooltip.dom.dot}this._hideTooltip();this.tooltip.dataPoint=dataPoint;if(typeof this.showTooltip===\"function\"){content.innerHTML=this.showTooltip(dataPoint.point)}else{content.innerHTML=\"<table>\"+\"<tr><td>\"+this.xLabel+\":</td><td>\"+dataPoint.point.x+\"</td></tr>\"+\"<tr><td>\"+this.yLabel+\":</td><td>\"+dataPoint.point.y+\"</td></tr>\"+\"<tr><td>\"+this.zLabel+\":</td><td>\"+dataPoint.point.z+\"</td></tr>\"+\"</table>\"}content.style.left=\"0\";content.style.top=\"0\";this.frame.appendChild(content);this.frame.appendChild(line);this.frame.appendChild(dot);var contentWidth=content.offsetWidth;var contentHeight=content.offsetHeight;var lineHeight=line.offsetHeight;var dotWidth=dot.offsetWidth;var dotHeight=dot.offsetHeight;var left=dataPoint.screen.x-contentWidth/2;left=Math.min(Math.max(left,10),this.frame.clientWidth-10-contentWidth);line.style.left=dataPoint.screen.x+\"px\";line.style.top=dataPoint.screen.y-lineHeight+\"px\";content.style.left=left+\"px\";content.style.top=dataPoint.screen.y-lineHeight-contentHeight+\"px\";dot.style.left=dataPoint.screen.x-dotWidth/2+\"px\";dot.style.top=dataPoint.screen.y-dotHeight/2+\"px\"};Graph3d.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var prop in this.tooltip.dom){if(this.tooltip.dom.hasOwnProperty(prop)){var elem=this.tooltip.dom[prop];if(elem&&elem.parentNode){elem.parentNode.removeChild(elem)}}}}};function getMouseX(event){if(\"clientX\"in event)return event.clientX;return event.targetTouches[0]&&event.targetTouches[0].clientX||0}function getMouseY(event){if(\"clientY\"in event)return event.clientY;return event.targetTouches[0]&&event.targetTouches[0].clientY||0}Graph3d.prototype.setCameraPosition=function(pos){Settings.setCameraPosition(pos,this);this.redraw()};Graph3d.prototype.setSize=function(width,height){this._setSize(width,height);this.redraw()};module.exports=Graph3d},function(module,exports,__webpack_require__){__webpack_require__(163);module.exports=__webpack_require__(7).Object.assign},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);$export($export.S+$export.F,\"Object\",{assign:__webpack_require__(164)})},function(module,exports,__webpack_require__){\"use strict\";var getKeys=__webpack_require__(33);var gOPS=__webpack_require__(63);var pIE=__webpack_require__(42);var toObject=__webpack_require__(41);var IObject=__webpack_require__(78);var $assign=Object.assign;module.exports=!$assign||__webpack_require__(28)(function(){var A={};var B={};var S=Symbol();var K=\"abcdefghijklmnopqrst\";A[S]=7;K.split(\"\").forEach(function(k){B[k]=k});return $assign({},A)[S]!=7||Object.keys($assign({},B)).join(\"\")!=K})?function assign(target,source){var T=toObject(target);var aLen=arguments.length;var index=1;var getSymbols=gOPS.f;var isEnum=pIE.f;while(aLen>index){var S=IObject(arguments[index++]);var keys=getSymbols?getKeys(S).concat(getSymbols(S)):getKeys(S);var length=keys.length;var j=0;var key;while(length>j)if(isEnum.call(S,key=keys[j++]))T[key]=S[key]}return T}:$assign},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(166),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(167);module.exports=__webpack_require__(7).Math.sign},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);$export($export.S,\"Math\",{sign:__webpack_require__(168)})},function(module,exports){module.exports=Math.sign||function sign(x){return(x=+x)==0||x!=x?x:x<0?-1:1}},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(170),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(171);var $Object=__webpack_require__(7).Object;module.exports=function defineProperty(it,key,desc){return $Object.defineProperty(it,key,desc)}},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);$export($export.S+$export.F*!__webpack_require__(21),\"Object\",{defineProperty:__webpack_require__(20).f})},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var string=\"string\";var bool=\"boolean\";var number=\"number\";var object=\"object\";var colorOptions={fill:{string:string},stroke:{string:string},strokeWidth:{number:number},__type__:{string:string,object:object,undefined:\"undefined\"}};var allOptions={animationAutoStart:{boolean:bool,undefined:\"undefined\"},animationInterval:{number:number},animationPreload:{boolean:bool},axisColor:{string:string},backgroundColor:colorOptions,xBarWidth:{number:number,undefined:\"undefined\"},yBarWidth:{number:number,undefined:\"undefined\"},cameraPosition:{distance:{number:number},horizontal:{number:number},vertical:{number:number},__type__:{object:object}},xCenter:{string:string},yCenter:{string:string},dataColor:colorOptions,dotSizeMinFraction:{number:number},dotSizeMaxFraction:{number:number},dotSizeRatio:{number:number},filterLabel:{string:string},gridColor:{string:string},onclick:{function:\"function\"},keepAspectRatio:{boolean:bool},xLabel:{string:string},yLabel:{string:string},zLabel:{string:string},legendLabel:{string:string},xMin:{number:number,undefined:\"undefined\"},yMin:{number:number,undefined:\"undefined\"},zMin:{number:number,undefined:\"undefined\"},xMax:{number:number,undefined:\"undefined\"},yMax:{number:number,undefined:\"undefined\"},zMax:{number:number,undefined:\"undefined\"},showAnimationControls:{boolean:bool,undefined:\"undefined\"},showGrid:{boolean:bool},showLegend:{boolean:bool,undefined:\"undefined\"},showPerspective:{boolean:bool},showShadow:{boolean:bool},showXAxis:{boolean:bool},showYAxis:{boolean:bool},showZAxis:{boolean:bool},xStep:{number:number,undefined:\"undefined\"},yStep:{number:number,undefined:\"undefined\"},zStep:{number:number,undefined:\"undefined\"},style:{number:number,string:[\"bar\",\"bar-color\",\"bar-size\",\"dot\",\"dot-line\",\"dot-color\",\"dot-size\",\"line\",\"grid\",\"surface\"]},tooltip:{boolean:bool,function:\"function\"},tooltipStyle:{content:{color:{string:string},background:{string:string},border:{string:string},borderRadius:{string:string},boxShadow:{string:string},padding:{string:string},__type__:{object:object}},line:{borderLeft:{string:string},height:{string:string},width:{string:string},__type__:{object:object}},dot:{border:{string:string},borderRadius:{string:string},height:{string:string},width:{string:string},__type__:{object:object}},__type__:{object:object}},xValueLabel:{function:\"function\"},yValueLabel:{function:\"function\"},zValueLabel:{function:\"function\"},valueMax:{number:number,undefined:\"undefined\"},valueMin:{number:number,undefined:\"undefined\"},verticalRatio:{number:number},height:{string:string},width:{string:string},__type__:{object:object}};exports.allOptions=allOptions},function(module,exports,__webpack_require__){\"use strict\";var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Range=__webpack_require__(174);var Filter=__webpack_require__(96);var Settings=__webpack_require__(94);var Point3d=__webpack_require__(34);function DataGroup(){this.dataTable=null}DataGroup.prototype.initializeData=function(graph3d,rawData,style){if(rawData===undefined)return;if(Array.isArray(rawData)){rawData=new DataSet(rawData)}var data;if(rawData instanceof DataSet||rawData instanceof DataView){data=rawData.get()}else{throw new Error(\"Array, DataSet, or DataView expected\")}if(data.length==0)return;this.style=style;if(this.dataSet){this.dataSet.off(\"*\",this._onChange)}this.dataSet=rawData;this.dataTable=data;var me=this;this._onChange=function(){graph3d.setData(me.dataSet)};this.dataSet.on(\"*\",this._onChange);this.colX=\"x\";this.colY=\"y\";this.colZ=\"z\";var withBars=graph3d.hasBars(style);if(withBars){if(graph3d.defaultXBarWidth!==undefined){this.xBarWidth=graph3d.defaultXBarWidth}else{this.xBarWidth=this.getSmallestDifference(data,this.colX)||1}if(graph3d.defaultYBarWidth!==undefined){this.yBarWidth=graph3d.defaultYBarWidth}else{this.yBarWidth=this.getSmallestDifference(data,this.colY)||1}}this._initializeRange(data,this.colX,graph3d,withBars);this._initializeRange(data,this.colY,graph3d,withBars);this._initializeRange(data,this.colZ,graph3d,false);if(data[0].hasOwnProperty(\"style\")){this.colValue=\"style\";var valueRange=this.getColumnRange(data,this.colValue);this._setRangeDefaults(valueRange,graph3d.defaultValueMin,graph3d.defaultValueMax);this.valueRange=valueRange}var table=this.getDataTable();if(table[0].hasOwnProperty(\"filter\")){if(this.dataFilter===undefined){this.dataFilter=new Filter(this,\"filter\",graph3d);this.dataFilter.setOnLoadCallback(function(){graph3d.redraw()})}}var dataPoints;if(this.dataFilter){dataPoints=this.dataFilter._getDataPoints()}else{dataPoints=this._getDataPoints(this.getDataTable())}return dataPoints};DataGroup.prototype._collectRangeSettings=function(column,graph3d){var index=[\"x\",\"y\",\"z\"].indexOf(column);if(index==-1){throw new Error(\"Column '\"+column+\"' invalid\")}var upper=column.toUpperCase();return{barWidth:this[column+\"BarWidth\"],min:graph3d[\"default\"+upper+\"Min\"],max:graph3d[\"default\"+upper+\"Max\"],step:graph3d[\"default\"+upper+\"Step\"],range_label:column+\"Range\",step_label:column+\"Step\"}};DataGroup.prototype._initializeRange=function(data,column,graph3d,withBars){var NUMSTEPS=5;var settings=this._collectRangeSettings(column,graph3d);var range=this.getColumnRange(data,column);if(withBars&&column!=\"z\"){range.expand(settings.barWidth/2)}this._setRangeDefaults(range,settings.min,settings.max);this[settings.range_label]=range;this[settings.step_label]=settings.step!==undefined?settings.step:range.range()/NUMSTEPS};DataGroup.prototype.getDistinctValues=function(column,data){if(data===undefined){data=this.dataTable}var values=[];for(var i=0;i<data.length;i++){var value=data[i][column]||0;if(values.indexOf(value)===-1){values.push(value)}}return values.sort(function(a,b){return a-b})};DataGroup.prototype.getSmallestDifference=function(data,column){var values=this.getDistinctValues(data,column);var smallest_diff=null;for(var i=1;i<values.length;i++){var diff=values[i]-values[i-1];if(smallest_diff==null||smallest_diff>diff){smallest_diff=diff}}return smallest_diff};DataGroup.prototype.getColumnRange=function(data,column){var range=new Range;for(var i=0;i<data.length;i++){var item=data[i][column];range.adjust(item)}return range};DataGroup.prototype.getNumberOfRows=function(){return this.dataTable.length};DataGroup.prototype._setRangeDefaults=function(range,defaultMin,defaultMax){if(defaultMin!==undefined){range.min=defaultMin}if(defaultMax!==undefined){range.max=defaultMax}if(range.max<=range.min)range.max=range.min+1};DataGroup.prototype.getDataTable=function(){return this.dataTable};DataGroup.prototype.getDataSet=function(){return this.dataSet};DataGroup.prototype.getDataPoints=function(data){var dataPoints=[];for(var i=0;i<data.length;i++){var point=new Point3d;point.x=data[i][this.colX]||0;point.y=data[i][this.colY]||0;point.z=data[i][this.colZ]||0;point.data=data[i];if(this.colValue!==undefined){point.value=data[i][this.colValue]||0}var obj={};obj.point=point;obj.bottom=new Point3d(point.x,point.y,this.zRange.min);obj.trans=undefined;obj.screen=undefined;dataPoints.push(obj)}return dataPoints};DataGroup.prototype.initDataAsMatrix=function(data){var x,y,i,obj;var dataX=this.getDistinctValues(this.colX,data);var dataY=this.getDistinctValues(this.colY,data);var dataPoints=this.getDataPoints(data);var dataMatrix=[];for(i=0;i<dataPoints.length;i++){obj=dataPoints[i];var xIndex=dataX.indexOf(obj.point.x);var yIndex=dataY.indexOf(obj.point.y);if(dataMatrix[xIndex]===undefined){dataMatrix[xIndex]=[]}dataMatrix[xIndex][yIndex]=obj}for(x=0;x<dataMatrix.length;x++){for(y=0;y<dataMatrix[x].length;y++){if(dataMatrix[x][y]){dataMatrix[x][y].pointRight=x<dataMatrix.length-1?dataMatrix[x+1][y]:undefined;dataMatrix[x][y].pointTop=y<dataMatrix[x].length-1?dataMatrix[x][y+1]:undefined;dataMatrix[x][y].pointCross=x<dataMatrix.length-1&&y<dataMatrix[x].length-1?dataMatrix[x+1][y+1]:undefined}}}return dataPoints};DataGroup.prototype.getInfo=function(){var dataFilter=this.dataFilter;if(!dataFilter)return undefined;return dataFilter.getLabel()+\": \"+dataFilter.getSelectedValue()};DataGroup.prototype.reload=function(){if(this.dataTable){this.setData(this.dataTable)}};DataGroup.prototype._getDataPoints=function(data){var dataPoints=[];if(this.style===Settings.STYLE.GRID||this.style===Settings.STYLE.SURFACE){dataPoints=this.initDataAsMatrix(data)}else{this._checkValueField(data);dataPoints=this.getDataPoints(data);if(this.style===Settings.STYLE.LINE){for(var i=0;i<dataPoints.length;i++){if(i>0){dataPoints[i-1].pointNext=dataPoints[i]}}}}return dataPoints};DataGroup.prototype._checkValueField=function(data){var hasValueField=this.style===Settings.STYLE.BARCOLOR||this.style===Settings.STYLE.BARSIZE||this.style===Settings.STYLE.DOTCOLOR||this.style===Settings.STYLE.DOTSIZE;if(!hasValueField){return}if(this.colValue===undefined){throw new Error(\"Expected data to have \"+\" field 'style' \"+\" for graph style '\"+this.style+\"'\")}if(data[0][this.colValue]===undefined){throw new Error(\"Expected data to have \"+\" field '\"+this.colValue+\"' \"+\" for graph style '\"+this.style+\"'\")}};module.exports=DataGroup},function(module,exports,__webpack_require__){\"use strict\";function Range(){this.min=undefined;this.max=undefined}Range.prototype.adjust=function(value){if(value===undefined)return;if(this.min===undefined||this.min>value){this.min=value}if(this.max===undefined||this.max<value){this.max=value}};Range.prototype.combine=function(range){this.add(range.min);this.add(range.max)};Range.prototype.expand=function(val){if(val===undefined){return}var newMin=this.min-val;var newMax=this.max+val;if(newMin>newMax){throw new Error(\"Passed expansion value makes range invalid\")}this.min=newMin;this.max=newMax};Range.prototype.range=function(){return this.max-this.min};Range.prototype.center=function(){return(this.min+this.max)/2};module.exports=Range},function(module,exports,__webpack_require__){\"use strict\";var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;(function(factory){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__=typeof __WEBPACK_AMD_DEFINE_FACTORY__===\"function\"?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else if(typeof exports===\"object\"){module.exports=factory()}else{window.propagating=factory()}})(function(){var _firstTarget=null;return function propagating(hammer,options){var _options=options||{preventDefault:false};if(hammer.Manager){var Hammer=hammer;var PropagatingHammer=function(element,options){var o=Object.create(_options);if(options)Hammer.assign(o,options);return propagating(new Hammer(element,o),o)};Hammer.assign(PropagatingHammer,Hammer);PropagatingHammer.Manager=function(element,options){var o=Object.create(_options);if(options)Hammer.assign(o,options);return propagating(new Hammer.Manager(element,o),o)};return PropagatingHammer}var wrapper=Object.create(hammer);var element=hammer.element;if(!element.hammer)element.hammer=[];element.hammer.push(wrapper);hammer.on(\"hammer.input\",function(event){if(_options.preventDefault===true||_options.preventDefault===event.pointerType){event.preventDefault()}if(event.isFirst){_firstTarget=event.target}});wrapper._handlers={};wrapper.on=function(events,handler){split(events).forEach(function(event){var _handlers=wrapper._handlers[event];if(!_handlers){wrapper._handlers[event]=_handlers=[];hammer.on(event,propagatedHandler)}_handlers.push(handler)});return wrapper};wrapper.off=function(events,handler){split(events).forEach(function(event){var _handlers=wrapper._handlers[event];if(_handlers){_handlers=handler?_handlers.filter(function(h){return h!==handler}):[];if(_handlers.length>0){wrapper._handlers[event]=_handlers}else{hammer.off(event,propagatedHandler);delete wrapper._handlers[event]}}});return wrapper};wrapper.emit=function(eventType,event){_firstTarget=event.target;hammer.emit(eventType,event)};wrapper.destroy=function(){var hammers=hammer.element.hammer;var idx=hammers.indexOf(wrapper);if(idx!==-1)hammers.splice(idx,1);if(!hammers.length)delete hammer.element.hammer;wrapper._handlers={};hammer.destroy()};function split(events){return events.match(/[^ ]+/g)}function propagatedHandler(event){if(event.type!==\"hammer.input\"){if(!event.srcEvent._handled){event.srcEvent._handled={}}if(event.srcEvent._handled[event.type]){return}else{event.srcEvent._handled[event.type]=true}}var stopped=false\n;event.stopPropagation=function(){stopped=true};var srcStop=event.srcEvent.stopPropagation.bind(event.srcEvent);if(typeof srcStop==\"function\"){event.srcEvent.stopPropagation=function(){srcStop();event.stopPropagation()}}event.firstTarget=_firstTarget;var elem=_firstTarget;while(elem&&!stopped){var elemHammer=elem.hammer;if(elemHammer){var _handlers;for(var k=0;k<elemHammer.length;k++){_handlers=elemHammer[k]._handlers[event.type];if(_handlers)for(var i=0;i<_handlers.length&&!stopped;i++){_handlers[i](event)}}}elem=elem.parentNode}}return wrapper}})},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;(function(window,document,exportName,undefined){\"use strict\";var VENDOR_PREFIXES=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"];var TEST_ELEMENT=document.createElement(\"div\");var TYPE_FUNCTION=\"function\";var round=Math.round;var abs=Math.abs;var now=Date.now;function setTimeoutContext(fn,timeout,context){return setTimeout(bindFn(fn,context),timeout)}function invokeArrayArg(arg,fn,context){if(Array.isArray(arg)){each(arg,context[fn],context);return true}return false}function each(obj,iterator,context){var i;if(!obj){return}if(obj.forEach){obj.forEach(iterator,context)}else if(obj.length!==undefined){i=0;while(i<obj.length){iterator.call(context,obj[i],i,obj);i++}}else{for(i in obj){obj.hasOwnProperty(i)&&iterator.call(context,obj[i],i,obj)}}}function deprecate(method,name,message){var deprecationMessage=\"DEPRECATED METHOD: \"+name+\"\\n\"+message+\" AT \\n\";return function(){var e=new Error(\"get-stack-trace\");var stack=e&&e.stack?e.stack.replace(/^[^\\(]+?[\\n$]/gm,\"\").replace(/^\\s+at\\s+/gm,\"\").replace(/^Object.<anonymous>\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\";var log=window.console&&(window.console.warn||window.console.log);if(log){log.call(window.console,deprecationMessage,stack)}return method.apply(this,arguments)}}var assign;if(typeof Object.assign!==\"function\"){assign=function assign(target){if(target===undefined||target===null){throw new TypeError(\"Cannot convert undefined or null to object\")}var output=Object(target);for(var index=1;index<arguments.length;index++){var source=arguments[index];if(source!==undefined&&source!==null){for(var nextKey in source){if(source.hasOwnProperty(nextKey)){output[nextKey]=source[nextKey]}}}}return output}}else{assign=Object.assign}var extend=deprecate(function extend(dest,src,merge){var keys=Object.keys(src);var i=0;while(i<keys.length){if(!merge||merge&&dest[keys[i]]===undefined){dest[keys[i]]=src[keys[i]]}i++}return dest},\"extend\",\"Use `assign`.\");var merge=deprecate(function merge(dest,src){return extend(dest,src,true)},\"merge\",\"Use `assign`.\");function inherit(child,base,properties){var baseP=base.prototype,childP;childP=child.prototype=Object.create(baseP);childP.constructor=child;childP._super=baseP;if(properties){assign(childP,properties)}}function bindFn(fn,context){return function boundFn(){return fn.apply(context,arguments)}}function boolOrFn(val,args){if(typeof val==TYPE_FUNCTION){return val.apply(args?args[0]||undefined:undefined,args)}return val}function ifUndefined(val1,val2){return val1===undefined?val2:val1}function addEventListeners(target,types,handler){each(splitStr(types),function(type){target.addEventListener(type,handler,false)})}function removeEventListeners(target,types,handler){each(splitStr(types),function(type){target.removeEventListener(type,handler,false)})}function hasParent(node,parent){while(node){if(node==parent){return true}node=node.parentNode}return false}function inStr(str,find){return str.indexOf(find)>-1}function splitStr(str){return str.trim().split(/\\s+/g)}function inArray(src,find,findByKey){if(src.indexOf&&!findByKey){return src.indexOf(find)}else{var i=0;while(i<src.length){if(findByKey&&src[i][findByKey]==find||!findByKey&&src[i]===find){return i}i++}return-1}}function toArray(obj){return Array.prototype.slice.call(obj,0)}function uniqueArray(src,key,sort){var results=[];var values=[];var i=0;while(i<src.length){var val=key?src[i][key]:src[i];if(inArray(values,val)<0){results.push(src[i])}values[i]=val;i++}if(sort){if(!key){results=results.sort()}else{results=results.sort(function sortUniqueArray(a,b){return a[key]>b[key]})}}return results}function prefixed(obj,property){var prefix,prop;var camelProp=property[0].toUpperCase()+property.slice(1);var i=0;while(i<VENDOR_PREFIXES.length){prefix=VENDOR_PREFIXES[i];prop=prefix?prefix+camelProp:property;if(prop in obj){return prop}i++}return undefined}var _uniqueId=1;function uniqueId(){return _uniqueId++}function getWindowForElement(element){var doc=element.ownerDocument||element;return doc.defaultView||doc.parentWindow||window}var MOBILE_REGEX=/mobile|tablet|ip(ad|hone|od)|android/i;var SUPPORT_TOUCH=\"ontouchstart\"in window;var SUPPORT_POINTER_EVENTS=prefixed(window,\"PointerEvent\")!==undefined;var SUPPORT_ONLY_TOUCH=SUPPORT_TOUCH&&MOBILE_REGEX.test(navigator.userAgent);var INPUT_TYPE_TOUCH=\"touch\";var INPUT_TYPE_PEN=\"pen\";var INPUT_TYPE_MOUSE=\"mouse\";var INPUT_TYPE_KINECT=\"kinect\";var COMPUTE_INTERVAL=25;var INPUT_START=1;var INPUT_MOVE=2;var INPUT_END=4;var INPUT_CANCEL=8;var DIRECTION_NONE=1;var DIRECTION_LEFT=2;var DIRECTION_RIGHT=4;var DIRECTION_UP=8;var DIRECTION_DOWN=16;var DIRECTION_HORIZONTAL=DIRECTION_LEFT|DIRECTION_RIGHT;var DIRECTION_VERTICAL=DIRECTION_UP|DIRECTION_DOWN;var DIRECTION_ALL=DIRECTION_HORIZONTAL|DIRECTION_VERTICAL;var PROPS_XY=[\"x\",\"y\"];var PROPS_CLIENT_XY=[\"clientX\",\"clientY\"];function Input(manager,callback){var self=this;this.manager=manager;this.callback=callback;this.element=manager.element;this.target=manager.options.inputTarget;this.domHandler=function(ev){if(boolOrFn(manager.options.enable,[manager])){self.handler(ev)}};this.init()}Input.prototype={handler:function(){},init:function(){this.evEl&&addEventListeners(this.element,this.evEl,this.domHandler);this.evTarget&&addEventListeners(this.target,this.evTarget,this.domHandler);this.evWin&&addEventListeners(getWindowForElement(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&removeEventListeners(this.element,this.evEl,this.domHandler);this.evTarget&&removeEventListeners(this.target,this.evTarget,this.domHandler);this.evWin&&removeEventListeners(getWindowForElement(this.element),this.evWin,this.domHandler)}};function createInputInstance(manager){var Type;var inputClass=manager.options.inputClass;if(inputClass){Type=inputClass}else if(SUPPORT_POINTER_EVENTS){Type=PointerEventInput}else if(SUPPORT_ONLY_TOUCH){Type=TouchInput}else if(!SUPPORT_TOUCH){Type=MouseInput}else{Type=TouchMouseInput}return new Type(manager,inputHandler)}function inputHandler(manager,eventType,input){var pointersLen=input.pointers.length;var changedPointersLen=input.changedPointers.length;var isFirst=eventType&INPUT_START&&pointersLen-changedPointersLen===0;var isFinal=eventType&(INPUT_END|INPUT_CANCEL)&&pointersLen-changedPointersLen===0;input.isFirst=!!isFirst;input.isFinal=!!isFinal;if(isFirst){manager.session={}}input.eventType=eventType;computeInputData(manager,input);manager.emit(\"hammer.input\",input);manager.recognize(input);manager.session.prevInput=input}function computeInputData(manager,input){var session=manager.session;var pointers=input.pointers;var pointersLength=pointers.length;if(!session.firstInput){session.firstInput=simpleCloneInputData(input)}if(pointersLength>1&&!session.firstMultiple){session.firstMultiple=simpleCloneInputData(input)}else if(pointersLength===1){session.firstMultiple=false}var firstInput=session.firstInput;var firstMultiple=session.firstMultiple;var offsetCenter=firstMultiple?firstMultiple.center:firstInput.center;var center=input.center=getCenter(pointers);input.timeStamp=now();input.deltaTime=input.timeStamp-firstInput.timeStamp;input.angle=getAngle(offsetCenter,center);input.distance=getDistance(offsetCenter,center);computeDeltaXY(session,input);input.offsetDirection=getDirection(input.deltaX,input.deltaY);var overallVelocity=getVelocity(input.deltaTime,input.deltaX,input.deltaY);input.overallVelocityX=overallVelocity.x;input.overallVelocityY=overallVelocity.y;input.overallVelocity=abs(overallVelocity.x)>abs(overallVelocity.y)?overallVelocity.x:overallVelocity.y;input.scale=firstMultiple?getScale(firstMultiple.pointers,pointers):1;input.rotation=firstMultiple?getRotation(firstMultiple.pointers,pointers):0;input.maxPointers=!session.prevInput?input.pointers.length:input.pointers.length>session.prevInput.maxPointers?input.pointers.length:session.prevInput.maxPointers;computeIntervalInputData(session,input);var target=manager.element;if(hasParent(input.srcEvent.target,target)){target=input.srcEvent.target}input.target=target}function computeDeltaXY(session,input){var center=input.center;var offset=session.offsetDelta||{};var prevDelta=session.prevDelta||{};var prevInput=session.prevInput||{};if(input.eventType===INPUT_START||prevInput.eventType===INPUT_END){prevDelta=session.prevDelta={x:prevInput.deltaX||0,y:prevInput.deltaY||0};offset=session.offsetDelta={x:center.x,y:center.y}}input.deltaX=prevDelta.x+(center.x-offset.x);input.deltaY=prevDelta.y+(center.y-offset.y)}function computeIntervalInputData(session,input){var last=session.lastInterval||input,deltaTime=input.timeStamp-last.timeStamp,velocity,velocityX,velocityY,direction;if(input.eventType!=INPUT_CANCEL&&(deltaTime>COMPUTE_INTERVAL||last.velocity===undefined)){var deltaX=input.deltaX-last.deltaX;var deltaY=input.deltaY-last.deltaY;var v=getVelocity(deltaTime,deltaX,deltaY);velocityX=v.x;velocityY=v.y;velocity=abs(v.x)>abs(v.y)?v.x:v.y;direction=getDirection(deltaX,deltaY);session.lastInterval=input}else{velocity=last.velocity;velocityX=last.velocityX;velocityY=last.velocityY;direction=last.direction}input.velocity=velocity;input.velocityX=velocityX;input.velocityY=velocityY;input.direction=direction}function simpleCloneInputData(input){var pointers=[];var i=0;while(i<input.pointers.length){pointers[i]={clientX:round(input.pointers[i].clientX),clientY:round(input.pointers[i].clientY)};i++}return{timeStamp:now(),pointers:pointers,center:getCenter(pointers),deltaX:input.deltaX,deltaY:input.deltaY}}function getCenter(pointers){var pointersLength=pointers.length;if(pointersLength===1){return{x:round(pointers[0].clientX),y:round(pointers[0].clientY)}}var x=0,y=0,i=0;while(i<pointersLength){x+=pointers[i].clientX;y+=pointers[i].clientY;i++}return{x:round(x/pointersLength),y:round(y/pointersLength)}}function getVelocity(deltaTime,x,y){return{x:x/deltaTime||0,y:y/deltaTime||0}}function getDirection(x,y){if(x===y){return DIRECTION_NONE}if(abs(x)>=abs(y)){return x<0?DIRECTION_LEFT:DIRECTION_RIGHT}return y<0?DIRECTION_UP:DIRECTION_DOWN}function getDistance(p1,p2,props){if(!props){props=PROPS_XY}var x=p2[props[0]]-p1[props[0]],y=p2[props[1]]-p1[props[1]];return Math.sqrt(x*x+y*y)}function getAngle(p1,p2,props){if(!props){props=PROPS_XY}var x=p2[props[0]]-p1[props[0]],y=p2[props[1]]-p1[props[1]];return Math.atan2(y,x)*180/Math.PI}function getRotation(start,end){return getAngle(end[1],end[0],PROPS_CLIENT_XY)+getAngle(start[1],start[0],PROPS_CLIENT_XY)}function getScale(start,end){return getDistance(end[0],end[1],PROPS_CLIENT_XY)/getDistance(start[0],start[1],PROPS_CLIENT_XY)}var MOUSE_INPUT_MAP={mousedown:INPUT_START,mousemove:INPUT_MOVE,mouseup:INPUT_END};var MOUSE_ELEMENT_EVENTS=\"mousedown\";var MOUSE_WINDOW_EVENTS=\"mousemove mouseup\";function MouseInput(){this.evEl=MOUSE_ELEMENT_EVENTS;this.evWin=MOUSE_WINDOW_EVENTS;this.pressed=false;Input.apply(this,arguments)}inherit(MouseInput,Input,{handler:function MEhandler(ev){var eventType=MOUSE_INPUT_MAP[ev.type];if(eventType&INPUT_START&&ev.button===0){this.pressed=true}if(eventType&INPUT_MOVE&&ev.which!==1){eventType=INPUT_END}if(!this.pressed){return}if(eventType&INPUT_END){this.pressed=false}this.callback(this.manager,eventType,{pointers:[ev],changedPointers:[ev],pointerType:INPUT_TYPE_MOUSE,srcEvent:ev})}});var POINTER_INPUT_MAP={pointerdown:INPUT_START,pointermove:INPUT_MOVE,pointerup:INPUT_END,pointercancel:INPUT_CANCEL,pointerout:INPUT_CANCEL};var IE10_POINTER_TYPE_ENUM={2:INPUT_TYPE_TOUCH,3:INPUT_TYPE_PEN,4:INPUT_TYPE_MOUSE,5:INPUT_TYPE_KINECT};var POINTER_ELEMENT_EVENTS=\"pointerdown\";var POINTER_WINDOW_EVENTS=\"pointermove pointerup pointercancel\";if(window.MSPointerEvent&&!window.PointerEvent){POINTER_ELEMENT_EVENTS=\"MSPointerDown\";POINTER_WINDOW_EVENTS=\"MSPointerMove MSPointerUp MSPointerCancel\"}function PointerEventInput(){this.evEl=POINTER_ELEMENT_EVENTS;this.evWin=POINTER_WINDOW_EVENTS;Input.apply(this,arguments);this.store=this.manager.session.pointerEvents=[]}inherit(PointerEventInput,Input,{handler:function PEhandler(ev){var store=this.store;var removePointer=false;var eventTypeNormalized=ev.type.toLowerCase().replace(\"ms\",\"\");var eventType=POINTER_INPUT_MAP[eventTypeNormalized];var pointerType=IE10_POINTER_TYPE_ENUM[ev.pointerType]||ev.pointerType;var isTouch=pointerType==INPUT_TYPE_TOUCH;var storeIndex=inArray(store,ev.pointerId,\"pointerId\");if(eventType&INPUT_START&&(ev.button===0||isTouch)){if(storeIndex<0){store.push(ev);storeIndex=store.length-1}}else if(eventType&(INPUT_END|INPUT_CANCEL)){removePointer=true}if(storeIndex<0){return}store[storeIndex]=ev;this.callback(this.manager,eventType,{pointers:store,changedPointers:[ev],pointerType:pointerType,srcEvent:ev});if(removePointer){store.splice(storeIndex,1)}}});var SINGLE_TOUCH_INPUT_MAP={touchstart:INPUT_START,touchmove:INPUT_MOVE,touchend:INPUT_END,touchcancel:INPUT_CANCEL};var SINGLE_TOUCH_TARGET_EVENTS=\"touchstart\";var SINGLE_TOUCH_WINDOW_EVENTS=\"touchstart touchmove touchend touchcancel\";function SingleTouchInput(){this.evTarget=SINGLE_TOUCH_TARGET_EVENTS;this.evWin=SINGLE_TOUCH_WINDOW_EVENTS;this.started=false;Input.apply(this,arguments)}inherit(SingleTouchInput,Input,{handler:function TEhandler(ev){var type=SINGLE_TOUCH_INPUT_MAP[ev.type];if(type===INPUT_START){this.started=true}if(!this.started){return}var touches=normalizeSingleTouches.call(this,ev,type);if(type&(INPUT_END|INPUT_CANCEL)&&touches[0].length-touches[1].length===0){this.started=false}this.callback(this.manager,type,{pointers:touches[0],changedPointers:touches[1],pointerType:INPUT_TYPE_TOUCH,srcEvent:ev})}});function normalizeSingleTouches(ev,type){var all=toArray(ev.touches);var changed=toArray(ev.changedTouches);if(type&(INPUT_END|INPUT_CANCEL)){all=uniqueArray(all.concat(changed),\"identifier\",true)}return[all,changed]}var TOUCH_INPUT_MAP={touchstart:INPUT_START,touchmove:INPUT_MOVE,touchend:INPUT_END,touchcancel:INPUT_CANCEL};var TOUCH_TARGET_EVENTS=\"touchstart touchmove touchend touchcancel\";function TouchInput(){this.evTarget=TOUCH_TARGET_EVENTS;this.targetIds={};Input.apply(this,arguments)}inherit(TouchInput,Input,{handler:function MTEhandler(ev){var type=TOUCH_INPUT_MAP[ev.type];var touches=getTouches.call(this,ev,type);if(!touches){return}this.callback(this.manager,type,{pointers:touches[0],changedPointers:touches[1],pointerType:INPUT_TYPE_TOUCH,srcEvent:ev})}});function getTouches(ev,type){var allTouches=toArray(ev.touches);var targetIds=this.targetIds;if(type&(INPUT_START|INPUT_MOVE)&&allTouches.length===1){targetIds[allTouches[0].identifier]=true;return[allTouches,allTouches]}var i,targetTouches,changedTouches=toArray(ev.changedTouches),changedTargetTouches=[],target=this.target;targetTouches=allTouches.filter(function(touch){return hasParent(touch.target,target)});if(type===INPUT_START){i=0;while(i<targetTouches.length){targetIds[targetTouches[i].identifier]=true;i++}}i=0;while(i<changedTouches.length){if(targetIds[changedTouches[i].identifier]){changedTargetTouches.push(changedTouches[i])}if(type&(INPUT_END|INPUT_CANCEL)){delete targetIds[changedTouches[i].identifier]}i++}if(!changedTargetTouches.length){return}return[uniqueArray(targetTouches.concat(changedTargetTouches),\"identifier\",true),changedTargetTouches]}var DEDUP_TIMEOUT=2500;var DEDUP_DISTANCE=25;function TouchMouseInput(){Input.apply(this,arguments);var handler=bindFn(this.handler,this);this.touch=new TouchInput(this.manager,handler);this.mouse=new MouseInput(this.manager,handler);this.primaryTouch=null;this.lastTouches=[]}inherit(TouchMouseInput,Input,{handler:function TMEhandler(manager,inputEvent,inputData){var isTouch=inputData.pointerType==INPUT_TYPE_TOUCH,isMouse=inputData.pointerType==INPUT_TYPE_MOUSE;if(isMouse&&inputData.sourceCapabilities&&inputData.sourceCapabilities.firesTouchEvents){return}if(isTouch){recordTouches.call(this,inputEvent,inputData)}else if(isMouse&&isSyntheticEvent.call(this,inputData)){return}this.callback(manager,inputEvent,inputData)},destroy:function destroy(){this.touch.destroy();this.mouse.destroy()}});function recordTouches(eventType,eventData){if(eventType&INPUT_START){this.primaryTouch=eventData.changedPointers[0].identifier;setLastTouch.call(this,eventData)}else if(eventType&(INPUT_END|INPUT_CANCEL)){setLastTouch.call(this,eventData)}}function setLastTouch(eventData){var touch=eventData.changedPointers[0];if(touch.identifier===this.primaryTouch){var lastTouch={x:touch.clientX,y:touch.clientY};this.lastTouches.push(lastTouch);var lts=this.lastTouches;var removeLastTouch=function(){var i=lts.indexOf(lastTouch);if(i>-1){lts.splice(i,1)}};setTimeout(removeLastTouch,DEDUP_TIMEOUT)}}function isSyntheticEvent(eventData){var x=eventData.srcEvent.clientX,y=eventData.srcEvent.clientY;for(var i=0;i<this.lastTouches.length;i++){var t=this.lastTouches[i];var dx=Math.abs(x-t.x),dy=Math.abs(y-t.y);if(dx<=DEDUP_DISTANCE&&dy<=DEDUP_DISTANCE){return true}}return false}var PREFIXED_TOUCH_ACTION=prefixed(TEST_ELEMENT.style,\"touchAction\");var NATIVE_TOUCH_ACTION=PREFIXED_TOUCH_ACTION!==undefined;var TOUCH_ACTION_COMPUTE=\"compute\";var TOUCH_ACTION_AUTO=\"auto\";var TOUCH_ACTION_MANIPULATION=\"manipulation\";var TOUCH_ACTION_NONE=\"none\";var TOUCH_ACTION_PAN_X=\"pan-x\";var TOUCH_ACTION_PAN_Y=\"pan-y\";var TOUCH_ACTION_MAP=getTouchActionProps();function TouchAction(manager,value){this.manager=manager;this.set(value)}TouchAction.prototype={set:function(value){if(value==TOUCH_ACTION_COMPUTE){value=this.compute()}if(NATIVE_TOUCH_ACTION&&this.manager.element.style&&TOUCH_ACTION_MAP[value]){this.manager.element.style[PREFIXED_TOUCH_ACTION]=value}this.actions=value.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var actions=[];each(this.manager.recognizers,function(recognizer){if(boolOrFn(recognizer.options.enable,[recognizer])){actions=actions.concat(recognizer.getTouchAction())}});return cleanTouchActions(actions.join(\" \"))},preventDefaults:function(input){var srcEvent=input.srcEvent;var direction=input.offsetDirection;if(this.manager.session.prevented){srcEvent.preventDefault();return}var actions=this.actions;var hasNone=inStr(actions,TOUCH_ACTION_NONE)&&!TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];var hasPanY=inStr(actions,TOUCH_ACTION_PAN_Y)&&!TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];var hasPanX=inStr(actions,TOUCH_ACTION_PAN_X)&&!TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];if(hasNone){var isTapPointer=input.pointers.length===1;var isTapMovement=input.distance<2;var isTapTouchTime=input.deltaTime<250;if(isTapPointer&&isTapMovement&&isTapTouchTime){return}}if(hasPanX&&hasPanY){return}if(hasNone||hasPanY&&direction&DIRECTION_HORIZONTAL||hasPanX&&direction&DIRECTION_VERTICAL){return this.preventSrc(srcEvent)}},preventSrc:function(srcEvent){this.manager.session.prevented=true;srcEvent.preventDefault()}};function cleanTouchActions(actions){if(inStr(actions,TOUCH_ACTION_NONE)){return TOUCH_ACTION_NONE}var hasPanX=inStr(actions,TOUCH_ACTION_PAN_X);var hasPanY=inStr(actions,TOUCH_ACTION_PAN_Y);if(hasPanX&&hasPanY){return TOUCH_ACTION_NONE}if(hasPanX||hasPanY){return hasPanX?TOUCH_ACTION_PAN_X:TOUCH_ACTION_PAN_Y}if(inStr(actions,TOUCH_ACTION_MANIPULATION)){return TOUCH_ACTION_MANIPULATION}return TOUCH_ACTION_AUTO}function getTouchActionProps(){if(!NATIVE_TOUCH_ACTION){return false}var touchMap={};var cssSupports=window.CSS&&window.CSS.supports;[\"auto\",\"manipulation\",\"pan-y\",\"pan-x\",\"pan-x pan-y\",\"none\"].forEach(function(val){touchMap[val]=cssSupports?window.CSS.supports(\"touch-action\",val):true});return touchMap}var STATE_POSSIBLE=1;var STATE_BEGAN=2;var STATE_CHANGED=4;var STATE_ENDED=8;var STATE_RECOGNIZED=STATE_ENDED;var STATE_CANCELLED=16;var STATE_FAILED=32;function Recognizer(options){this.options=assign({},this.defaults,options||{});this.id=uniqueId();this.manager=null;this.options.enable=ifUndefined(this.options.enable,true);this.state=STATE_POSSIBLE;this.simultaneous={};this.requireFail=[]}Recognizer.prototype={defaults:{},set:function(options){assign(this.options,options);this.manager&&this.manager.touchAction.update();return this},recognizeWith:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,\"recognizeWith\",this)){return this}var simultaneous=this.simultaneous;otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this);if(!simultaneous[otherRecognizer.id]){simultaneous[otherRecognizer.id]=otherRecognizer;otherRecognizer.recognizeWith(this)}return this},dropRecognizeWith:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,\"dropRecognizeWith\",this)){return this}otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this);delete this.simultaneous[otherRecognizer.id];return this},requireFailure:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,\"requireFailure\",this)){return this}var requireFail=this.requireFail;otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this);if(inArray(requireFail,otherRecognizer)===-1){requireFail.push(otherRecognizer);otherRecognizer.requireFailure(this)}return this},dropRequireFailure:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,\"dropRequireFailure\",this)){return this}otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this);var index=inArray(this.requireFail,otherRecognizer);if(index>-1){this.requireFail.splice(index,1)}return this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(otherRecognizer){return!!this.simultaneous[otherRecognizer.id]},emit:function(input){var self=this;var state=this.state;function emit(event){self.manager.emit(event,input)}if(state<STATE_ENDED){emit(self.options.event+stateStr(state))}emit(self.options.event);if(input.additionalEvent){emit(input.additionalEvent)}if(state>=STATE_ENDED){emit(self.options.event+stateStr(state))}},tryEmit:function(input){if(this.canEmit()){return this.emit(input)}this.state=STATE_FAILED},canEmit:function(){var i=0;while(i<this.requireFail.length){if(!(this.requireFail[i].state&(STATE_FAILED|STATE_POSSIBLE))){return false}i++}return true},recognize:function(inputData){var inputDataClone=assign({},inputData);if(!boolOrFn(this.options.enable,[this,inputDataClone])){this.reset();this.state=STATE_FAILED;return}if(this.state&(STATE_RECOGNIZED|STATE_CANCELLED|STATE_FAILED)){this.state=STATE_POSSIBLE}this.state=this.process(inputDataClone);if(this.state&(STATE_BEGAN|STATE_CHANGED|STATE_ENDED|STATE_CANCELLED)){this.tryEmit(inputDataClone)}},process:function(inputData){},getTouchAction:function(){},reset:function(){}};function stateStr(state){if(state&STATE_CANCELLED){return\"cancel\"}else if(state&STATE_ENDED){return\"end\"}else if(state&STATE_CHANGED){return\"move\"}else if(state&STATE_BEGAN){return\"start\"}return\"\"}function directionStr(direction){if(direction==DIRECTION_DOWN){return\"down\"}else if(direction==DIRECTION_UP){return\"up\"}else if(direction==DIRECTION_LEFT){return\"left\"}else if(direction==DIRECTION_RIGHT){return\"right\"}return\"\"}function getRecognizerByNameIfManager(otherRecognizer,recognizer){var manager=recognizer.manager;if(manager){return manager.get(otherRecognizer)}return otherRecognizer}function AttrRecognizer(){Recognizer.apply(this,arguments)}inherit(AttrRecognizer,Recognizer,{defaults:{pointers:1},attrTest:function(input){var optionPointers=this.options.pointers;return optionPointers===0||input.pointers.length===optionPointers},process:function(input){var state=this.state;var eventType=input.eventType;var isRecognized=state&(STATE_BEGAN|STATE_CHANGED);var isValid=this.attrTest(input);if(isRecognized&&(eventType&INPUT_CANCEL||!isValid)){return state|STATE_CANCELLED}else if(isRecognized||isValid){if(eventType&INPUT_END){return state|STATE_ENDED}else if(!(state&STATE_BEGAN)){return STATE_BEGAN}return state|STATE_CHANGED}return STATE_FAILED}});function PanRecognizer(){AttrRecognizer.apply(this,arguments);this.pX=null;this.pY=null}inherit(PanRecognizer,AttrRecognizer,{defaults:{event:\"pan\",threshold:10,pointers:1,direction:DIRECTION_ALL},getTouchAction:function(){var direction=this.options.direction;var actions=[];if(direction&DIRECTION_HORIZONTAL){actions.push(TOUCH_ACTION_PAN_Y)}if(direction&DIRECTION_VERTICAL){actions.push(TOUCH_ACTION_PAN_X)}return actions},directionTest:function(input){var options=this.options;var hasMoved=true;var distance=input.distance;var direction=input.direction;var x=input.deltaX;var y=input.deltaY;if(!(direction&options.direction)){if(options.direction&DIRECTION_HORIZONTAL){direction=x===0?DIRECTION_NONE:x<0?DIRECTION_LEFT:DIRECTION_RIGHT;hasMoved=x!=this.pX;distance=Math.abs(input.deltaX)}else{direction=y===0?DIRECTION_NONE:y<0?DIRECTION_UP:DIRECTION_DOWN;hasMoved=y!=this.pY;distance=Math.abs(input.deltaY)}}input.direction=direction;return hasMoved&&distance>options.threshold&&direction&options.direction},attrTest:function(input){return AttrRecognizer.prototype.attrTest.call(this,input)&&(this.state&STATE_BEGAN||!(this.state&STATE_BEGAN)&&this.directionTest(input))},emit:function(input){this.pX=input.deltaX;this.pY=input.deltaY;var direction=directionStr(input.direction);if(direction){input.additionalEvent=this.options.event+direction}this._super.emit.call(this,input)}});function PinchRecognizer(){AttrRecognizer.apply(this,arguments)}inherit(PinchRecognizer,AttrRecognizer,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[TOUCH_ACTION_NONE]},attrTest:function(input){return this._super.attrTest.call(this,input)&&(Math.abs(input.scale-1)>this.options.threshold||this.state&STATE_BEGAN)},emit:function(input){if(input.scale!==1){var inOut=input.scale<1?\"in\":\"out\";input.additionalEvent=this.options.event+inOut}this._super.emit.call(this,input)}});function PressRecognizer(){Recognizer.apply(this,arguments);this._timer=null;this._input=null}inherit(PressRecognizer,Recognizer,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[TOUCH_ACTION_AUTO]},process:function(input){var options=this.options;var validPointers=input.pointers.length===options.pointers;var validMovement=input.distance<options.threshold;var validTime=input.deltaTime>options.time;this._input=input;if(!validMovement||!validPointers||input.eventType&(INPUT_END|INPUT_CANCEL)&&!validTime){this.reset()}else if(input.eventType&INPUT_START){this.reset();this._timer=setTimeoutContext(function(){this.state=STATE_RECOGNIZED;this.tryEmit()},options.time,this)}else if(input.eventType&INPUT_END){return STATE_RECOGNIZED}return STATE_FAILED},reset:function(){clearTimeout(this._timer)},emit:function(input){if(this.state!==STATE_RECOGNIZED){return}if(input&&input.eventType&INPUT_END){this.manager.emit(this.options.event+\"up\",input)}else{this._input.timeStamp=now();this.manager.emit(this.options.event,this._input)}}});function RotateRecognizer(){AttrRecognizer.apply(this,arguments)}inherit(RotateRecognizer,AttrRecognizer,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[TOUCH_ACTION_NONE]},attrTest:function(input){return this._super.attrTest.call(this,input)&&(Math.abs(input.rotation)>this.options.threshold||this.state&STATE_BEGAN)}});function SwipeRecognizer(){AttrRecognizer.apply(this,arguments)}inherit(SwipeRecognizer,AttrRecognizer,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:DIRECTION_HORIZONTAL|DIRECTION_VERTICAL,pointers:1},getTouchAction:function(){return PanRecognizer.prototype.getTouchAction.call(this)},attrTest:function(input){var direction=this.options.direction;var velocity;if(direction&(DIRECTION_HORIZONTAL|DIRECTION_VERTICAL)){velocity=input.overallVelocity}else if(direction&DIRECTION_HORIZONTAL){velocity=input.overallVelocityX}else if(direction&DIRECTION_VERTICAL){velocity=input.overallVelocityY}return this._super.attrTest.call(this,input)&&direction&input.offsetDirection&&input.distance>this.options.threshold&&input.maxPointers==this.options.pointers&&abs(velocity)>this.options.velocity&&input.eventType&INPUT_END},emit:function(input){var direction=directionStr(input.offsetDirection);if(direction){this.manager.emit(this.options.event+direction,input)}this.manager.emit(this.options.event,input)}});function TapRecognizer(){Recognizer.apply(this,arguments);this.pTime=false;this.pCenter=false;this._timer=null;this._input=null;this.count=0}inherit(TapRecognizer,Recognizer,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[TOUCH_ACTION_MANIPULATION]},process:function(input){var options=this.options;var validPointers=input.pointers.length===options.pointers;var validMovement=input.distance<options.threshold;var validTouchTime=input.deltaTime<options.time;this.reset();if(input.eventType&INPUT_START&&this.count===0){return this.failTimeout()}if(validMovement&&validTouchTime&&validPointers){if(input.eventType!=INPUT_END){return this.failTimeout()}var validInterval=this.pTime?input.timeStamp-this.pTime<options.interval:true;var validMultiTap=!this.pCenter||getDistance(this.pCenter,input.center)<options.posThreshold;this.pTime=input.timeStamp;this.pCenter=input.center;if(!validMultiTap||!validInterval){this.count=1}else{this.count+=1}this._input=input;var tapCount=this.count%options.taps;if(tapCount===0){if(!this.hasRequireFailures()){return STATE_RECOGNIZED}else{this._timer=setTimeoutContext(function(){this.state=STATE_RECOGNIZED;this.tryEmit()},options.interval,this);return STATE_BEGAN}}}return STATE_FAILED},failTimeout:function(){this._timer=setTimeoutContext(function(){this.state=STATE_FAILED},this.options.interval,this);return STATE_FAILED},reset:function(){clearTimeout(this._timer)},emit:function(){if(this.state==STATE_RECOGNIZED){this._input.tapCount=this.count;this.manager.emit(this.options.event,this._input)}}});function Hammer(element,options){options=options||{};options.recognizers=ifUndefined(options.recognizers,Hammer.defaults.preset);return new Manager(element,options)}Hammer.VERSION=\"2.0.7\";Hammer.defaults={domEvents:false,touchAction:TOUCH_ACTION_COMPUTE,enable:true,inputTarget:null,inputClass:null,preset:[[RotateRecognizer,{enable:false}],[PinchRecognizer,{enable:false},[\"rotate\"]],[SwipeRecognizer,{direction:DIRECTION_HORIZONTAL}],[PanRecognizer,{direction:DIRECTION_HORIZONTAL},[\"swipe\"]],[TapRecognizer],[TapRecognizer,{event:\"doubletap\",taps:2},[\"tap\"]],[PressRecognizer]],cssProps:{userSelect:\"none\",touchSelect:\"none\",touchCallout:\"none\",contentZooming:\"none\",userDrag:\"none\",tapHighlightColor:\"rgba(0,0,0,0)\"}};var STOP=1;var FORCED_STOP=2;function Manager(element,options){this.options=assign({},Hammer.defaults,options||{});this.options.inputTarget=this.options.inputTarget||element;this.handlers={};this.session={};this.recognizers=[];this.oldCssProps={};this.element=element;this.input=createInputInstance(this);this.touchAction=new TouchAction(this,this.options.touchAction);toggleCssProps(this,true);each(this.options.recognizers,function(item){var recognizer=this.add(new item[0](item[1]));item[2]&&recognizer.recognizeWith(item[2]);item[3]&&recognizer.requireFailure(item[3])},this)}Manager.prototype={set:function(options){assign(this.options,options);if(options.touchAction){this.touchAction.update()}if(options.inputTarget){this.input.destroy();this.input.target=options.inputTarget;this.input.init()}return this},stop:function(force){this.session.stopped=force?FORCED_STOP:STOP},recognize:function(inputData){var session=this.session;if(session.stopped){return}this.touchAction.preventDefaults(inputData)\n;var recognizer;var recognizers=this.recognizers;var curRecognizer=session.curRecognizer;if(!curRecognizer||curRecognizer&&curRecognizer.state&STATE_RECOGNIZED){curRecognizer=session.curRecognizer=null}var i=0;while(i<recognizers.length){recognizer=recognizers[i];if(session.stopped!==FORCED_STOP&&(!curRecognizer||recognizer==curRecognizer||recognizer.canRecognizeWith(curRecognizer))){recognizer.recognize(inputData)}else{recognizer.reset()}if(!curRecognizer&&recognizer.state&(STATE_BEGAN|STATE_CHANGED|STATE_ENDED)){curRecognizer=session.curRecognizer=recognizer}i++}},get:function(recognizer){if(recognizer instanceof Recognizer){return recognizer}var recognizers=this.recognizers;for(var i=0;i<recognizers.length;i++){if(recognizers[i].options.event==recognizer){return recognizers[i]}}return null},add:function(recognizer){if(invokeArrayArg(recognizer,\"add\",this)){return this}var existing=this.get(recognizer.options.event);if(existing){this.remove(existing)}this.recognizers.push(recognizer);recognizer.manager=this;this.touchAction.update();return recognizer},remove:function(recognizer){if(invokeArrayArg(recognizer,\"remove\",this)){return this}recognizer=this.get(recognizer);if(recognizer){var recognizers=this.recognizers;var index=inArray(recognizers,recognizer);if(index!==-1){recognizers.splice(index,1);this.touchAction.update()}}return this},on:function(events,handler){if(events===undefined){return}if(handler===undefined){return}var handlers=this.handlers;each(splitStr(events),function(event){handlers[event]=handlers[event]||[];handlers[event].push(handler)});return this},off:function(events,handler){if(events===undefined){return}var handlers=this.handlers;each(splitStr(events),function(event){if(!handler){delete handlers[event]}else{handlers[event]&&handlers[event].splice(inArray(handlers[event],handler),1)}});return this},emit:function(event,data){if(this.options.domEvents){triggerDomEvent(event,data)}var handlers=this.handlers[event]&&this.handlers[event].slice();if(!handlers||!handlers.length){return}data.type=event;data.preventDefault=function(){data.srcEvent.preventDefault()};var i=0;while(i<handlers.length){handlers[i](data);i++}},destroy:function(){this.element&&toggleCssProps(this,false);this.handlers={};this.session={};this.input.destroy();this.element=null}};function toggleCssProps(manager,add){var element=manager.element;if(!element.style){return}var prop;each(manager.options.cssProps,function(value,name){prop=prefixed(element.style,name);if(add){manager.oldCssProps[prop]=element.style[prop];element.style[prop]=value}else{element.style[prop]=manager.oldCssProps[prop]||\"\"}});if(!add){manager.oldCssProps={}}}function triggerDomEvent(event,data){var gestureEvent=document.createEvent(\"Event\");gestureEvent.initEvent(event,true,true);gestureEvent.gesture=data;data.target.dispatchEvent(gestureEvent)}assign(Hammer,{INPUT_START:INPUT_START,INPUT_MOVE:INPUT_MOVE,INPUT_END:INPUT_END,INPUT_CANCEL:INPUT_CANCEL,STATE_POSSIBLE:STATE_POSSIBLE,STATE_BEGAN:STATE_BEGAN,STATE_CHANGED:STATE_CHANGED,STATE_ENDED:STATE_ENDED,STATE_RECOGNIZED:STATE_RECOGNIZED,STATE_CANCELLED:STATE_CANCELLED,STATE_FAILED:STATE_FAILED,DIRECTION_NONE:DIRECTION_NONE,DIRECTION_LEFT:DIRECTION_LEFT,DIRECTION_RIGHT:DIRECTION_RIGHT,DIRECTION_UP:DIRECTION_UP,DIRECTION_DOWN:DIRECTION_DOWN,DIRECTION_HORIZONTAL:DIRECTION_HORIZONTAL,DIRECTION_VERTICAL:DIRECTION_VERTICAL,DIRECTION_ALL:DIRECTION_ALL,Manager:Manager,Input:Input,TouchAction:TouchAction,TouchInput:TouchInput,MouseInput:MouseInput,PointerEventInput:PointerEventInput,TouchMouseInput:TouchMouseInput,SingleTouchInput:SingleTouchInput,Recognizer:Recognizer,AttrRecognizer:AttrRecognizer,Tap:TapRecognizer,Pan:PanRecognizer,Swipe:SwipeRecognizer,Pinch:PinchRecognizer,Rotate:RotateRecognizer,Press:PressRecognizer,on:addEventListeners,off:removeEventListeners,each:each,merge:merge,extend:extend,assign:assign,inherit:inherit,bindFn:bindFn,prefixed:prefixed});var freeGlobal=typeof window!==\"undefined\"?window:typeof self!==\"undefined\"?self:{};freeGlobal.Hammer=Hammer;if(true){!(__WEBPACK_AMD_DEFINE_RESULT__=function(){return Hammer}.call(exports,__webpack_require__,exports,module),__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else if(typeof module!=\"undefined\"&&module.exports){module.exports=Hammer}else{window[exportName]=Hammer}})(window,document,\"Hammer\")},function(module,exports,__webpack_require__){\"use strict\";exports.util=__webpack_require__(2);exports.DOMutil=__webpack_require__(14);exports.DataSet=__webpack_require__(11);exports.DataView=__webpack_require__(12);exports.Queue=__webpack_require__(43);exports.Timeline=__webpack_require__(178);exports.Graph2d=__webpack_require__(180);exports.timeline={Core:__webpack_require__(65),DateUtil:__webpack_require__(36),Range:__webpack_require__(64),stack:__webpack_require__(100),TimeStep:__webpack_require__(66),components:{items:{Item:__webpack_require__(38),BackgroundItem:__webpack_require__(103),BoxItem:__webpack_require__(101),PointItem:__webpack_require__(102),RangeItem:__webpack_require__(70)},BackgroundGroup:__webpack_require__(69),Component:__webpack_require__(16),CurrentTime:__webpack_require__(67),CustomTime:__webpack_require__(46),DataAxis:__webpack_require__(107),DataScale:__webpack_require__(108),GraphGroup:__webpack_require__(109),Group:__webpack_require__(68),ItemSet:__webpack_require__(99),Legend:__webpack_require__(112),LineGraph:__webpack_require__(106),TimeAxis:__webpack_require__(45)}};exports.moment=__webpack_require__(9);exports.Hammer=__webpack_require__(10);exports.keycharm=__webpack_require__(35)},function(module,exports,__webpack_require__){\"use strict\";var moment=__webpack_require__(9);var util=__webpack_require__(2);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Range=__webpack_require__(64);var Core=__webpack_require__(65);var TimeAxis=__webpack_require__(45);var CurrentTime=__webpack_require__(67);var CustomTime=__webpack_require__(46);var ItemSet=__webpack_require__(99);var printStyle=__webpack_require__(15).printStyle;var allOptions=__webpack_require__(105).allOptions;var configureOptions=__webpack_require__(105).configureOptions;var Configurator=__webpack_require__(71)[\"default\"];var Validator=__webpack_require__(15)[\"default\"];function Timeline(container,items,groups,options){if(!(this instanceof Timeline)){throw new SyntaxError(\"Constructor must be called with the new operator\")}if(!(Array.isArray(groups)||groups instanceof DataSet||groups instanceof DataView)&&groups instanceof Object){var forthArgument=options;options=groups;groups=forthArgument}if(options&&options.throttleRedraw){console.warn('Timeline option \"throttleRedraw\" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.')}var me=this;this.defaultOptions={start:null,end:null,autoResize:true,orientation:{axis:\"bottom\",item:\"bottom\"},moment:moment,width:null,height:null,maxHeight:null,minHeight:null};this.options=util.deepExtend({},this.defaultOptions);this._create(container);if(!options||options&&typeof options.rtl==\"undefined\"){this.dom.root.style.visibility=\"hidden\";var directionFromDom,domNode=this.dom.root;while(!directionFromDom&&domNode){directionFromDom=window.getComputedStyle(domNode,null).direction;domNode=domNode.parentElement}this.options.rtl=directionFromDom&&directionFromDom.toLowerCase()==\"rtl\"}else{this.options.rtl=options.rtl}this.options.rollingMode=options&&options.rollingMode;this.options.onInitialDrawComplete=options&&options.onInitialDrawComplete;this.components=[];this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function getScale(){return me.timeAxis.step.scale},getStep:function getStep(){return me.timeAxis.step.step},toScreen:me._toScreen.bind(me),toGlobalScreen:me._toGlobalScreen.bind(me),toTime:me._toTime.bind(me),toGlobalTime:me._toGlobalTime.bind(me)}};this.range=new Range(this.body,this.options);this.components.push(this.range);this.body.range=this.range;this.timeAxis=new TimeAxis(this.body,this.options);this.timeAxis2=null;this.components.push(this.timeAxis);this.currentTime=new CurrentTime(this.body,this.options);this.components.push(this.currentTime);this.itemSet=new ItemSet(this.body,this.options);this.components.push(this.itemSet);this.itemsData=null;this.groupsData=null;this.dom.root.onclick=function(event){me.emit(\"click\",me.getEventProperties(event))};this.dom.root.ondblclick=function(event){me.emit(\"doubleClick\",me.getEventProperties(event))};this.dom.root.oncontextmenu=function(event){me.emit(\"contextmenu\",me.getEventProperties(event))};this.dom.root.onmouseover=function(event){me.emit(\"mouseOver\",me.getEventProperties(event))};if(window.PointerEvent){this.dom.root.onpointerdown=function(event){me.emit(\"mouseDown\",me.getEventProperties(event))};this.dom.root.onpointermove=function(event){me.emit(\"mouseMove\",me.getEventProperties(event))};this.dom.root.onpointerup=function(event){me.emit(\"mouseUp\",me.getEventProperties(event))}}else{this.dom.root.onmousemove=function(event){me.emit(\"mouseMove\",me.getEventProperties(event))};this.dom.root.onmousedown=function(event){me.emit(\"mouseDown\",me.getEventProperties(event))};this.dom.root.onmouseup=function(event){me.emit(\"mouseUp\",me.getEventProperties(event))}}this.initialFitDone=false;this.on(\"changed\",function(){if(this.itemsData==null||this.options.rollingMode)return;if(!me.initialFitDone){me.initialFitDone=true;if(me.options.start!=undefined||me.options.end!=undefined){if(me.options.start==undefined||me.options.end==undefined){var range=me.getItemRange()}var start=me.options.start!=undefined?me.options.start:range.min;var end=me.options.end!=undefined?me.options.end:range.max;me.setWindow(start,end,{animation:false})}else{me.fit({animation:false})}}if(!me.initialDrawDone&&me.initialRangeChangeDone){me.initialDrawDone=true;me.dom.root.style.visibility=\"visible\";if(me.options.onInitialDrawComplete){setTimeout(function(){return me.options.onInitialDrawComplete()},0)}}});if(options){this.setOptions(options)}if(groups){this.setGroups(groups)}if(items){this.setItems(items)}this._redraw()}Timeline.prototype=new Core;Timeline.prototype._createConfigurator=function(){return new Configurator(this,this.dom.container,configureOptions)};Timeline.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:true});this._redraw()};Timeline.prototype.setOptions=function(options){var errorFound=Validator.validate(options,allOptions);if(errorFound===true){console.log(\"%cErrors have been found in the supplied options object.\",printStyle)}Core.prototype.setOptions.call(this,options);if(\"type\"in options){if(options.type!==this.options.type){this.options.type=options.type;var itemsData=this.itemsData;if(itemsData){var selection=this.getSelection();this.setItems(null);this.setItems(itemsData);this.setSelection(selection)}}}};Timeline.prototype.setItems=function(items){var newDataSet;if(!items){newDataSet=null}else if(items instanceof DataSet||items instanceof DataView){newDataSet=items}else{newDataSet=new DataSet(items,{type:{start:\"Date\",end:\"Date\"}})}this.itemsData=newDataSet;this.itemSet&&this.itemSet.setItems(newDataSet)};Timeline.prototype.setGroups=function(groups){var newDataSet;if(!groups){newDataSet=null}else{var filter=function filter(group){return group.visible!==false};if(groups instanceof DataSet||groups instanceof DataView){newDataSet=new DataView(groups,{filter:filter})}else{newDataSet=new DataSet(groups.filter(filter))}}this.groupsData=newDataSet;this.itemSet.setGroups(newDataSet)};Timeline.prototype.setData=function(data){if(data&&data.groups){this.setGroups(data.groups)}if(data&&data.items){this.setItems(data.items)}};Timeline.prototype.setSelection=function(ids,options){this.itemSet&&this.itemSet.setSelection(ids);if(options&&options.focus){this.focus(ids,options)}};Timeline.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]};Timeline.prototype.focus=function(id,options){if(!this.itemsData||id==undefined)return;var ids=Array.isArray(id)?id:[id];var itemsData=this.itemsData.getDataSet().get(ids,{type:{start:\"Date\",end:\"Date\"}});var start=null;var end=null;itemsData.forEach(function(itemData){var s=itemData.start.valueOf();var e=\"end\"in itemData?itemData.end.valueOf():itemData.start.valueOf();if(start===null||s<start){start=s}if(end===null||e>end){end=e}});if(start!==null&&end!==null){var me=this;var item=this.itemSet.items[ids[0]];var startPos=this._getScrollTop()*-1;var initialVerticalScroll=null;var verticalAnimationFrame=function verticalAnimationFrame(ease,willDraw,done){var verticalScroll=getItemVerticalScroll(me,item);if(!initialVerticalScroll){initialVerticalScroll=verticalScroll}if(initialVerticalScroll.itemTop==verticalScroll.itemTop&&!initialVerticalScroll.shouldScroll){return}else if(initialVerticalScroll.itemTop!=verticalScroll.itemTop&&verticalScroll.shouldScroll){initialVerticalScroll=verticalScroll;startPos=me._getScrollTop()*-1}var from=startPos;var to=initialVerticalScroll.scrollOffset;var scrollTop=done?to:from+(to-from)*ease;me._setScrollTop(-scrollTop);if(!willDraw){me._redraw()}};var setFinalVerticalPosition=function setFinalVerticalPosition(){var finalVerticalScroll=getItemVerticalScroll(me,item);if(finalVerticalScroll.shouldScroll&&finalVerticalScroll.itemTop!=initialVerticalScroll.itemTop){me._setScrollTop(-finalVerticalScroll.scrollOffset);me._redraw()}};var finalVerticalCallback=function finalVerticalCallback(){setFinalVerticalPosition();setTimeout(setFinalVerticalPosition,100)};var middle=(start+end)/2;var interval=Math.max(this.range.end-this.range.start,(end-start)*1.1);var animation=options&&options.animation!==undefined?options.animation:true;if(!animation){initialVerticalScroll={shouldScroll:false,scrollOffset:-1,itemTop:-1}}this.range.setRange(middle-interval/2,middle+interval/2,{animation:animation},finalVerticalCallback,verticalAnimationFrame)}};Timeline.prototype.fit=function(options,callback){var animation=options&&options.animation!==undefined?options.animation:true;var range;var dataset=this.itemsData&&this.itemsData.getDataSet();if(dataset.length===1&&dataset.get()[0].end===undefined){range=this.getDataRange();this.moveTo(range.min.valueOf(),{animation:animation},callback)}else{range=this.getItemRange();this.range.setRange(range.min,range.max,{animation:animation},callback)}};function getStart(item){return util.convert(item.data.start,\"Date\").valueOf()}function getEnd(item){var end=item.data.end!=undefined?item.data.end:item.data.start;return util.convert(end,\"Date\").valueOf()}function getItemVerticalScroll(timeline,item){var leftHeight=timeline.props.leftContainer.height;var contentHeight=timeline.props.left.height;var group=item.parent;var offset=group.top;var shouldScroll=true;var orientation=timeline.timeAxis.options.orientation.axis;var itemTop=function itemTop(){if(orientation==\"bottom\"){return group.height-item.top-item.height}else{return item.top}};var currentScrollHeight=timeline._getScrollTop()*-1;var targetOffset=offset+itemTop();var height=item.height;if(targetOffset<currentScrollHeight){if(offset+leftHeight<=offset+itemTop()+height){offset+=itemTop()-timeline.itemSet.options.margin.item.vertical}}else if(targetOffset+height>currentScrollHeight+leftHeight){offset+=itemTop()+height-leftHeight+timeline.itemSet.options.margin.item.vertical}else{shouldScroll=false}offset=Math.min(offset,contentHeight-leftHeight);return{shouldScroll:shouldScroll,scrollOffset:offset,itemTop:targetOffset}}Timeline.prototype.getItemRange=function(){var range=this.getDataRange();var min=range.min!==null?range.min.valueOf():null;var max=range.max!==null?range.max.valueOf():null;var minItem=null;var maxItem=null;if(min!=null&&max!=null){var interval=max-min;if(interval<=0){interval=10}var factor=interval/this.props.center.width;var redrawQueue={};var redrawQueueLength=0;util.forEach(this.itemSet.items,function(item,key){if(item.groupShowing){var returnQueue=true;redrawQueue[key]=item.redraw(returnQueue);redrawQueueLength=redrawQueue[key].length}});var needRedraw=redrawQueueLength>0;if(needRedraw){for(var i=0;i<redrawQueueLength;i++){util.forEach(redrawQueue,function(fns){fns[i]()})}}util.forEach(this.itemSet.items,function(item){var start=getStart(item);var end=getEnd(item);var startSide;var endSide;if(this.options.rtl){startSide=start-(item.getWidthRight()+10)*factor;endSide=end+(item.getWidthLeft()+10)*factor}else{startSide=start-(item.getWidthLeft()+10)*factor;endSide=end+(item.getWidthRight()+10)*factor}if(startSide<min){min=startSide;minItem=item}if(endSide>max){max=endSide;maxItem=item}}.bind(this));if(minItem&&maxItem){var lhs=minItem.getWidthLeft()+10;var rhs=maxItem.getWidthRight()+10;var delta=this.props.center.width-lhs-rhs;if(delta>0){if(this.options.rtl){min=getStart(minItem)-rhs*interval/delta;max=getEnd(maxItem)+lhs*interval/delta}else{min=getStart(minItem)-lhs*interval/delta;max=getEnd(maxItem)+rhs*interval/delta}}}}return{min:min!=null?new Date(min):null,max:max!=null?new Date(max):null}};Timeline.prototype.getDataRange=function(){var min=null;var max=null;var dataset=this.itemsData&&this.itemsData.getDataSet();if(dataset){dataset.forEach(function(item){var start=util.convert(item.start,\"Date\").valueOf();var end=util.convert(item.end!=undefined?item.end:item.start,\"Date\").valueOf();if(min===null||start<min){min=start}if(max===null||end>max){max=end}})}return{min:min!=null?new Date(min):null,max:max!=null?new Date(max):null}};Timeline.prototype.getEventProperties=function(event){var clientX=event.center?event.center.x:event.clientX;var clientY=event.center?event.center.y:event.clientY;var x;if(this.options.rtl){x=util.getAbsoluteRight(this.dom.centerContainer)-clientX}else{x=clientX-util.getAbsoluteLeft(this.dom.centerContainer)}var y=clientY-util.getAbsoluteTop(this.dom.centerContainer);var item=this.itemSet.itemFromTarget(event);var group=this.itemSet.groupFromTarget(event);var customTime=CustomTime.customTimeFromTarget(event);var snap=this.itemSet.options.snap||null;var scale=this.body.util.getScale();var step=this.body.util.getStep();var time=this._toTime(x);var snappedTime=snap?snap(time,scale,step):time;var element=util.getTarget(event);var what=null;if(item!=null){what=\"item\"}else if(customTime!=null){what=\"custom-time\"}else if(util.hasParent(element,this.timeAxis.dom.foreground)){what=\"axis\"}else if(this.timeAxis2&&util.hasParent(element,this.timeAxis2.dom.foreground)){what=\"axis\"}else if(util.hasParent(element,this.itemSet.dom.labelSet)){what=\"group-label\"}else if(util.hasParent(element,this.currentTime.bar)){what=\"current-time\"}else if(util.hasParent(element,this.dom.center)){what=\"background\"}return{event:event,item:item?item.id:null,group:group?group.groupId:null,what:what,pageX:event.srcEvent?event.srcEvent.pageX:event.pageX,pageY:event.srcEvent?event.srcEvent.pageY:event.pageY,x:x,y:y,time:time,snappedTime:snappedTime}};Timeline.prototype.toggleRollingMode=function(){if(this.range.rolling){this.range.stopRolling()}else{if(this.options.rollingMode==undefined){this.setOptions(this.options)}this.range.startRolling()}};module.exports=Timeline},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hammer=__webpack_require__(10);var hammerUtil=__webpack_require__(37);var util=__webpack_require__(2);var ColorPicker=function(){function ColorPicker(){var pixelRatio=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;(0,_classCallCheck3[\"default\"])(this,ColorPicker);this.pixelRatio=pixelRatio;this.generated=false;this.centerCoordinates={x:289/2,y:289/2};this.r=289*.49;this.color={r:255,g:255,b:255,a:1};this.hueCircle=undefined;this.initialColor={r:255,g:255,b:255,a:1};this.previousColor=undefined;this.applied=false;this.updateCallback=function(){};this.closeCallback=function(){};this._create()}(0,_createClass3[\"default\"])(ColorPicker,[{key:\"insertTo\",value:function insertTo(container){if(this.hammer!==undefined){this.hammer.destroy();this.hammer=undefined}this.container=container;this.container.appendChild(this.frame);this._bindHammer();this._setSize()}},{key:\"setUpdateCallback\",value:function setUpdateCallback(callback){if(typeof callback===\"function\"){this.updateCallback=callback}else{throw new Error(\"Function attempted to set as colorPicker update callback is not a function.\")}}},{key:\"setCloseCallback\",value:function setCloseCallback(callback){if(typeof callback===\"function\"){this.closeCallback=callback}else{throw new Error(\"Function attempted to set as colorPicker closing callback is not a function.\")}}},{key:\"_isColorString\",value:function _isColorString(color){var htmlColors={black:\"#000000\",navy:\"#000080\",darkblue:\"#00008B\",mediumblue:\"#0000CD\",blue:\"#0000FF\",darkgreen:\"#006400\",green:\"#008000\",teal:\"#008080\",darkcyan:\"#008B8B\",deepskyblue:\"#00BFFF\",darkturquoise:\"#00CED1\",mediumspringgreen:\"#00FA9A\",lime:\"#00FF00\",springgreen:\"#00FF7F\",aqua:\"#00FFFF\",cyan:\"#00FFFF\",midnightblue:\"#191970\",dodgerblue:\"#1E90FF\",lightseagreen:\"#20B2AA\",forestgreen:\"#228B22\",seagreen:\"#2E8B57\",darkslategray:\"#2F4F4F\",limegreen:\"#32CD32\",mediumseagreen:\"#3CB371\",turquoise:\"#40E0D0\",royalblue:\"#4169E1\",steelblue:\"#4682B4\",darkslateblue:\"#483D8B\",mediumturquoise:\"#48D1CC\",indigo:\"#4B0082\",darkolivegreen:\"#556B2F\",cadetblue:\"#5F9EA0\",cornflowerblue:\"#6495ED\",mediumaquamarine:\"#66CDAA\",dimgray:\"#696969\",slateblue:\"#6A5ACD\",olivedrab:\"#6B8E23\",slategray:\"#708090\",lightslategray:\"#778899\",mediumslateblue:\"#7B68EE\",lawngreen:\"#7CFC00\",chartreuse:\"#7FFF00\",aquamarine:\"#7FFFD4\",maroon:\"#800000\",purple:\"#800080\",olive:\"#808000\",gray:\"#808080\",skyblue:\"#87CEEB\",lightskyblue:\"#87CEFA\",blueviolet:\"#8A2BE2\",darkred:\"#8B0000\",darkmagenta:\"#8B008B\",saddlebrown:\"#8B4513\",darkseagreen:\"#8FBC8F\",lightgreen:\"#90EE90\",mediumpurple:\"#9370D8\",darkviolet:\"#9400D3\",palegreen:\"#98FB98\",darkorchid:\"#9932CC\",yellowgreen:\"#9ACD32\",sienna:\"#A0522D\",brown:\"#A52A2A\",darkgray:\"#A9A9A9\",lightblue:\"#ADD8E6\",greenyellow:\"#ADFF2F\",paleturquoise:\"#AFEEEE\",lightsteelblue:\"#B0C4DE\",powderblue:\"#B0E0E6\",firebrick:\"#B22222\",darkgoldenrod:\"#B8860B\",mediumorchid:\"#BA55D3\",rosybrown:\"#BC8F8F\",darkkhaki:\"#BDB76B\",silver:\"#C0C0C0\",mediumvioletred:\"#C71585\",indianred:\"#CD5C5C\",peru:\"#CD853F\",chocolate:\"#D2691E\",tan:\"#D2B48C\",lightgrey:\"#D3D3D3\",palevioletred:\"#D87093\",thistle:\"#D8BFD8\",orchid:\"#DA70D6\",goldenrod:\"#DAA520\",crimson:\"#DC143C\",gainsboro:\"#DCDCDC\",plum:\"#DDA0DD\",burlywood:\"#DEB887\",lightcyan:\"#E0FFFF\",lavender:\"#E6E6FA\",darksalmon:\"#E9967A\",violet:\"#EE82EE\",palegoldenrod:\"#EEE8AA\",lightcoral:\"#F08080\",khaki:\"#F0E68C\",aliceblue:\"#F0F8FF\",honeydew:\"#F0FFF0\",azure:\"#F0FFFF\",sandybrown:\"#F4A460\",wheat:\"#F5DEB3\",beige:\"#F5F5DC\",whitesmoke:\"#F5F5F5\",mintcream:\"#F5FFFA\",ghostwhite:\"#F8F8FF\",salmon:\"#FA8072\",antiquewhite:\"#FAEBD7\",linen:\"#FAF0E6\",lightgoldenrodyellow:\"#FAFAD2\",oldlace:\"#FDF5E6\",red:\"#FF0000\",fuchsia:\"#FF00FF\",magenta:\"#FF00FF\",deeppink:\"#FF1493\",orangered:\"#FF4500\",tomato:\"#FF6347\",hotpink:\"#FF69B4\",coral:\"#FF7F50\",darkorange:\"#FF8C00\",lightsalmon:\"#FFA07A\",orange:\"#FFA500\",lightpink:\"#FFB6C1\",pink:\"#FFC0CB\",gold:\"#FFD700\",peachpuff:\"#FFDAB9\",navajowhite:\"#FFDEAD\",moccasin:\"#FFE4B5\",bisque:\"#FFE4C4\",mistyrose:\"#FFE4E1\",blanchedalmond:\"#FFEBCD\",papayawhip:\"#FFEFD5\",lavenderblush:\"#FFF0F5\",seashell:\"#FFF5EE\",cornsilk:\"#FFF8DC\",lemonchiffon:\"#FFFACD\",floralwhite:\"#FFFAF0\",snow:\"#FFFAFA\",yellow:\"#FFFF00\",lightyellow:\"#FFFFE0\",ivory:\"#FFFFF0\",white:\"#FFFFFF\"};if(typeof color===\"string\"){return htmlColors[color]}}},{key:\"setColor\",value:function setColor(color){var setInitial=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(color===\"none\"){return}var rgba=void 0;var htmlColor=this._isColorString(color);if(htmlColor!==undefined){color=htmlColor}if(util.isString(color)===true){if(util.isValidRGB(color)===true){var rgbaArray=color.substr(4).substr(0,color.length-5).split(\",\");rgba={r:rgbaArray[0],g:rgbaArray[1],b:rgbaArray[2],a:1}}else if(util.isValidRGBA(color)===true){var _rgbaArray=color.substr(5).substr(0,color.length-6).split(\",\");rgba={r:_rgbaArray[0],g:_rgbaArray[1],b:_rgbaArray[2],a:_rgbaArray[3]}}else if(util.isValidHex(color)===true){var rgbObj=util.hexToRGB(color);rgba={r:rgbObj.r,g:rgbObj.g,b:rgbObj.b,a:1}}}else{if(color instanceof Object){if(color.r!==undefined&&color.g!==undefined&&color.b!==undefined){var alpha=color.a!==undefined?color.a:\"1.0\";rgba={r:color.r,g:color.g,b:color.b,a:alpha}}}}if(rgba===undefined){throw new Error(\"Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: \"+(0,_stringify2[\"default\"])(color))}else{this._setColor(rgba,setInitial)}}},{key:\"show\",value:function show(){if(this.closeCallback!==undefined){this.closeCallback();this.closeCallback=undefined}this.applied=false;this.frame.style.display=\"block\";this._generateHueCircle()}},{key:\"_hide\",value:function _hide(){var _this=this;var storePrevious=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;if(storePrevious===true){this.previousColor=util.extend({},this.color)}if(this.applied===true){this.updateCallback(this.initialColor)}this.frame.style.display=\"none\";setTimeout(function(){if(_this.closeCallback!==undefined){_this.closeCallback();_this.closeCallback=undefined}},0)}},{key:\"_save\",value:function _save(){this.updateCallback(this.color);this.applied=false;this._hide()}},{key:\"_apply\",value:function _apply(){this.applied=true;this.updateCallback(this.color);this._updatePicker(this.color)}},{key:\"_loadLast\",value:function _loadLast(){if(this.previousColor!==undefined){this.setColor(this.previousColor,false)}else{alert(\"There is no last color to load...\")}}},{key:\"_setColor\",value:function _setColor(rgba){var setInitial=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(setInitial===true){this.initialColor=util.extend({},rgba)}this.color=rgba;var hsv=util.RGBToHSV(rgba.r,rgba.g,rgba.b);var angleConvert=2*Math.PI;var radius=this.r*hsv.s;var x=this.centerCoordinates.x+radius*Math.sin(angleConvert*hsv.h);var y=this.centerCoordinates.y+radius*Math.cos(angleConvert*hsv.h);this.colorPickerSelector.style.left=x-.5*this.colorPickerSelector.clientWidth+\"px\";this.colorPickerSelector.style.top=y-.5*this.colorPickerSelector.clientHeight+\"px\";this._updatePicker(rgba)}},{key:\"_setOpacity\",value:function _setOpacity(value){this.color.a=value/100;this._updatePicker(this.color)}},{key:\"_setBrightness\",value:function _setBrightness(value){var hsv=util.RGBToHSV(this.color.r,this.color.g,this.color.b);hsv.v=value/100;var rgba=util.HSVToRGB(hsv.h,hsv.s,hsv.v);rgba[\"a\"]=this.color.a;this.color=rgba;this._updatePicker()}},{key:\"_updatePicker\",value:function _updatePicker(){var rgba=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.color;var hsv=util.RGBToHSV(rgba.r,rgba.g,rgba.b);var ctx=this.colorPickerCanvas.getContext(\"2d\");if(this.pixelRation===undefined){this.pixelRatio=(window.devicePixelRatio||1)/(ctx.webkitBackingStorePixelRatio||ctx.mozBackingStorePixelRatio||ctx.msBackingStorePixelRatio||ctx.oBackingStorePixelRatio||ctx.backingStorePixelRatio||1)}ctx.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var w=this.colorPickerCanvas.clientWidth;var h=this.colorPickerCanvas.clientHeight;ctx.clearRect(0,0,w,h);ctx.putImageData(this.hueCircle,0,0);ctx.fillStyle=\"rgba(0,0,0,\"+(1-hsv.v)+\")\";ctx.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r);ctx.fill();this.brightnessRange.value=100*hsv.v;this.opacityRange.value=100*rgba.a;this.initialColorDiv.style.backgroundColor=\"rgba(\"+this.initialColor.r+\",\"+this.initialColor.g+\",\"+this.initialColor.b+\",\"+this.initialColor.a+\")\";this.newColorDiv.style.backgroundColor=\"rgba(\"+this.color.r+\",\"+this.color.g+\",\"+this.color.b+\",\"+this.color.a+\")\"}},{key:\"_setSize\",value:function _setSize(){this.colorPickerCanvas.style.width=\"100%\";this.colorPickerCanvas.style.height=\"100%\";this.colorPickerCanvas.width=289*this.pixelRatio;this.colorPickerCanvas.height=289*this.pixelRatio}},{key:\"_create\",value:function _create(){this.frame=document.createElement(\"div\");this.frame.className=\"vis-color-picker\";this.colorPickerDiv=document.createElement(\"div\");this.colorPickerSelector=document.createElement(\"div\");this.colorPickerSelector.className=\"vis-selector\";this.colorPickerDiv.appendChild(this.colorPickerSelector);this.colorPickerCanvas=document.createElement(\"canvas\");this.colorPickerDiv.appendChild(this.colorPickerCanvas);if(!this.colorPickerCanvas.getContext){var noCanvas=document.createElement(\"DIV\");noCanvas.style.color=\"red\";noCanvas.style.fontWeight=\"bold\";noCanvas.style.padding=\"10px\";noCanvas.innerHTML=\"Error: your browser does not support HTML canvas\";this.colorPickerCanvas.appendChild(noCanvas)}else{var ctx=this.colorPickerCanvas.getContext(\"2d\");this.pixelRatio=(window.devicePixelRatio||1)/(ctx.webkitBackingStorePixelRatio||ctx.mozBackingStorePixelRatio||ctx.msBackingStorePixelRatio||ctx.oBackingStorePixelRatio||ctx.backingStorePixelRatio||1);this.colorPickerCanvas.getContext(\"2d\").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}this.colorPickerDiv.className=\"vis-color\";this.opacityDiv=document.createElement(\"div\");this.opacityDiv.className=\"vis-opacity\";this.brightnessDiv=document.createElement(\"div\");this.brightnessDiv.className=\"vis-brightness\";this.arrowDiv=document.createElement(\"div\");this.arrowDiv.className=\"vis-arrow\";this.opacityRange=document.createElement(\"input\");try{this.opacityRange.type=\"range\";this.opacityRange.min=\"0\";this.opacityRange.max=\"100\"}catch(err){}this.opacityRange.value=\"100\";this.opacityRange.className=\"vis-range\";this.brightnessRange=document.createElement(\"input\");try{this.brightnessRange.type=\"range\";this.brightnessRange.min=\"0\";this.brightnessRange.max=\"100\"}catch(err){}this.brightnessRange.value=\"100\";this.brightnessRange.className=\"vis-range\";this.opacityDiv.appendChild(this.opacityRange);this.brightnessDiv.appendChild(this.brightnessRange);var me=this;this.opacityRange.onchange=function(){me._setOpacity(this.value)};this.opacityRange.oninput=function(){me._setOpacity(this.value)};this.brightnessRange.onchange=function(){me._setBrightness(this.value)};this.brightnessRange.oninput=function(){me._setBrightness(this.value)};this.brightnessLabel=document.createElement(\"div\");this.brightnessLabel.className=\"vis-label vis-brightness\";this.brightnessLabel.innerHTML=\"brightness:\";this.opacityLabel=document.createElement(\"div\");this.opacityLabel.className=\"vis-label vis-opacity\";this.opacityLabel.innerHTML=\"opacity:\";this.newColorDiv=document.createElement(\"div\");this.newColorDiv.className=\"vis-new-color\";this.newColorDiv.innerHTML=\"new\";this.initialColorDiv=document.createElement(\"div\");this.initialColorDiv.className=\"vis-initial-color\";this.initialColorDiv.innerHTML=\"initial\";this.cancelButton=document.createElement(\"div\");this.cancelButton.className=\"vis-button vis-cancel\";this.cancelButton.innerHTML=\"cancel\";this.cancelButton.onclick=this._hide.bind(this,false);this.applyButton=document.createElement(\"div\");this.applyButton.className=\"vis-button vis-apply\";this.applyButton.innerHTML=\"apply\";this.applyButton.onclick=this._apply.bind(this);this.saveButton=document.createElement(\"div\");this.saveButton.className=\"vis-button vis-save\";this.saveButton.innerHTML=\"save\";this.saveButton.onclick=this._save.bind(this);this.loadButton=document.createElement(\"div\");this.loadButton.className=\"vis-button vis-load\";this.loadButton.innerHTML=\"load last\";this.loadButton.onclick=this._loadLast.bind(this)\n;this.frame.appendChild(this.colorPickerDiv);this.frame.appendChild(this.arrowDiv);this.frame.appendChild(this.brightnessLabel);this.frame.appendChild(this.brightnessDiv);this.frame.appendChild(this.opacityLabel);this.frame.appendChild(this.opacityDiv);this.frame.appendChild(this.newColorDiv);this.frame.appendChild(this.initialColorDiv);this.frame.appendChild(this.cancelButton);this.frame.appendChild(this.applyButton);this.frame.appendChild(this.saveButton);this.frame.appendChild(this.loadButton)}},{key:\"_bindHammer\",value:function _bindHammer(){var _this2=this;this.drag={};this.pinch={};this.hammer=new Hammer(this.colorPickerCanvas);this.hammer.get(\"pinch\").set({enable:true});hammerUtil.onTouch(this.hammer,function(event){_this2._moveSelector(event)});this.hammer.on(\"tap\",function(event){_this2._moveSelector(event)});this.hammer.on(\"panstart\",function(event){_this2._moveSelector(event)});this.hammer.on(\"panmove\",function(event){_this2._moveSelector(event)});this.hammer.on(\"panend\",function(event){_this2._moveSelector(event)})}},{key:\"_generateHueCircle\",value:function _generateHueCircle(){if(this.generated===false){var ctx=this.colorPickerCanvas.getContext(\"2d\");if(this.pixelRation===undefined){this.pixelRatio=(window.devicePixelRatio||1)/(ctx.webkitBackingStorePixelRatio||ctx.mozBackingStorePixelRatio||ctx.msBackingStorePixelRatio||ctx.oBackingStorePixelRatio||ctx.backingStorePixelRatio||1)}ctx.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var w=this.colorPickerCanvas.clientWidth;var h=this.colorPickerCanvas.clientHeight;ctx.clearRect(0,0,w,h);var x=void 0,y=void 0,hue=void 0,sat=void 0;this.centerCoordinates={x:w*.5,y:h*.5};this.r=.49*w;var angleConvert=2*Math.PI/360;var hfac=1/360;var sfac=1/this.r;var rgb=void 0;for(hue=0;hue<360;hue++){for(sat=0;sat<this.r;sat++){x=this.centerCoordinates.x+sat*Math.sin(angleConvert*hue);y=this.centerCoordinates.y+sat*Math.cos(angleConvert*hue);rgb=util.HSVToRGB(hue*hfac,sat*sfac,1);ctx.fillStyle=\"rgb(\"+rgb.r+\",\"+rgb.g+\",\"+rgb.b+\")\";ctx.fillRect(x-.5,y-.5,2,2)}}ctx.strokeStyle=\"rgba(0,0,0,1)\";ctx.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r);ctx.stroke();this.hueCircle=ctx.getImageData(0,0,w,h)}this.generated=true}},{key:\"_moveSelector\",value:function _moveSelector(event){var rect=this.colorPickerDiv.getBoundingClientRect();var left=event.center.x-rect.left;var top=event.center.y-rect.top;var centerY=.5*this.colorPickerDiv.clientHeight;var centerX=.5*this.colorPickerDiv.clientWidth;var x=left-centerX;var y=top-centerY;var angle=Math.atan2(x,y);var radius=.98*Math.min(Math.sqrt(x*x+y*y),centerX);var newTop=Math.cos(angle)*radius+centerY;var newLeft=Math.sin(angle)*radius+centerX;this.colorPickerSelector.style.top=newTop-.5*this.colorPickerSelector.clientHeight+\"px\";this.colorPickerSelector.style.left=newLeft-.5*this.colorPickerSelector.clientWidth+\"px\";var h=angle/(2*Math.PI);h=h<0?h+1:h;var s=radius/this.r;var hsv=util.RGBToHSV(this.color.r,this.color.g,this.color.b);hsv.h=h;hsv.s=s;var rgba=util.HSVToRGB(hsv.h,hsv.s,hsv.v);rgba[\"a\"]=this.color.a;this.color=rgba;this.initialColorDiv.style.backgroundColor=\"rgba(\"+this.initialColor.r+\",\"+this.initialColor.g+\",\"+this.initialColor.b+\",\"+this.initialColor.a+\")\";this.newColorDiv.style.backgroundColor=\"rgba(\"+this.color.r+\",\"+this.color.g+\",\"+this.color.b+\",\"+this.color.a+\")\"}}]);return ColorPicker}();exports[\"default\"]=ColorPicker},function(module,exports,__webpack_require__){\"use strict\";var moment=__webpack_require__(9);var util=__webpack_require__(2);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Range=__webpack_require__(64);var Core=__webpack_require__(65);var TimeAxis=__webpack_require__(45);var CurrentTime=__webpack_require__(67);var CustomTime=__webpack_require__(46);var LineGraph=__webpack_require__(106);var printStyle=__webpack_require__(15).printStyle;var allOptions=__webpack_require__(113).allOptions;var configureOptions=__webpack_require__(113).configureOptions;var Configurator=__webpack_require__(71)[\"default\"];var Validator=__webpack_require__(15)[\"default\"];function Graph2d(container,items,groups,options){if(!(Array.isArray(groups)||groups instanceof DataSet||groups instanceof DataView)&&groups instanceof Object){var forthArgument=options;options=groups;groups=forthArgument}if(options&&options.throttleRedraw){console.warn('Graph2d option \"throttleRedraw\" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.')}var me=this;this.defaultOptions={start:null,end:null,autoResize:true,orientation:{axis:\"bottom\",item:\"bottom\"},moment:moment,width:null,height:null,maxHeight:null,minHeight:null};this.options=util.deepExtend({},this.defaultOptions);this._create(container);this.components=[];this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:me._toScreen.bind(me),toGlobalScreen:me._toGlobalScreen.bind(me),toTime:me._toTime.bind(me),toGlobalTime:me._toGlobalTime.bind(me)}};this.range=new Range(this.body);this.components.push(this.range);this.body.range=this.range;this.timeAxis=new TimeAxis(this.body);this.components.push(this.timeAxis);this.currentTime=new CurrentTime(this.body);this.components.push(this.currentTime);this.linegraph=new LineGraph(this.body);this.components.push(this.linegraph);this.itemsData=null;this.groupsData=null;this.on(\"tap\",function(event){me.emit(\"click\",me.getEventProperties(event))});this.on(\"doubletap\",function(event){me.emit(\"doubleClick\",me.getEventProperties(event))});this.dom.root.oncontextmenu=function(event){me.emit(\"contextmenu\",me.getEventProperties(event))};if(options){this.setOptions(options)}if(groups){this.setGroups(groups)}if(items){this.setItems(items)}this._redraw()}Graph2d.prototype=new Core;Graph2d.prototype.setOptions=function(options){var errorFound=Validator.validate(options,allOptions);if(errorFound===true){console.log(\"%cErrors have been found in the supplied options object.\",printStyle)}Core.prototype.setOptions.call(this,options)};Graph2d.prototype.setItems=function(items){var initialLoad=this.itemsData==null;var newDataSet;if(!items){newDataSet=null}else if(items instanceof DataSet||items instanceof DataView){newDataSet=items}else{newDataSet=new DataSet(items,{type:{start:\"Date\",end:\"Date\"}})}this.itemsData=newDataSet;this.linegraph&&this.linegraph.setItems(newDataSet);if(initialLoad){if(this.options.start!=undefined||this.options.end!=undefined){var start=this.options.start!=undefined?this.options.start:null;var end=this.options.end!=undefined?this.options.end:null;this.setWindow(start,end,{animation:false})}else{this.fit({animation:false})}}};Graph2d.prototype.setGroups=function(groups){var newDataSet;if(!groups){newDataSet=null}else if(groups instanceof DataSet||groups instanceof DataView){newDataSet=groups}else{newDataSet=new DataSet(groups)}this.groupsData=newDataSet;this.linegraph.setGroups(newDataSet)};Graph2d.prototype.getLegend=function(groupId,width,height){if(width===undefined){width=15}if(height===undefined){height=15}if(this.linegraph.groups[groupId]!==undefined){return this.linegraph.groups[groupId].getLegend(width,height)}else{return\"cannot find group:'\"+groupId+\"'\"}};Graph2d.prototype.isGroupVisible=function(groupId){if(this.linegraph.groups[groupId]!==undefined){return this.linegraph.groups[groupId].visible&&(this.linegraph.options.groups.visibility[groupId]===undefined||this.linegraph.options.groups.visibility[groupId]==true)}else{return false}};Graph2d.prototype.getDataRange=function(){var min=null;var max=null;for(var groupId in this.linegraph.groups){if(this.linegraph.groups.hasOwnProperty(groupId)){if(this.linegraph.groups[groupId].visible==true){for(var i=0;i<this.linegraph.groups[groupId].itemsData.length;i++){var item=this.linegraph.groups[groupId].itemsData[i];var value=util.convert(item.x,\"Date\").valueOf();min=min==null?value:min>value?value:min;max=max==null?value:max<value?value:max}}}}return{min:min!=null?new Date(min):null,max:max!=null?new Date(max):null}};Graph2d.prototype.getEventProperties=function(event){var clientX=event.center?event.center.x:event.clientX;var clientY=event.center?event.center.y:event.clientY;var x=clientX-util.getAbsoluteLeft(this.dom.centerContainer);var y=clientY-util.getAbsoluteTop(this.dom.centerContainer);var time=this._toTime(x);var customTime=CustomTime.customTimeFromTarget(event);var element=util.getTarget(event);var what=null;if(util.hasParent(element,this.timeAxis.dom.foreground)){what=\"axis\"}else if(this.timeAxis2&&util.hasParent(element,this.timeAxis2.dom.foreground)){what=\"axis\"}else if(util.hasParent(element,this.linegraph.yAxisLeft.dom.frame)){what=\"data-axis\"}else if(util.hasParent(element,this.linegraph.yAxisRight.dom.frame)){what=\"data-axis\"}else if(util.hasParent(element,this.linegraph.legendLeft.dom.frame)){what=\"legend\"}else if(util.hasParent(element,this.linegraph.legendRight.dom.frame)){what=\"legend\"}else if(customTime!=null){what=\"custom-time\"}else if(util.hasParent(element,this.currentTime.bar)){what=\"current-time\"}else if(util.hasParent(element,this.dom.center)){what=\"background\"}var value=[];var yAxisLeft=this.linegraph.yAxisLeft;var yAxisRight=this.linegraph.yAxisRight;if(!yAxisLeft.hidden&&this.itemsData.length>0){value.push(yAxisLeft.screenToValue(y))}if(!yAxisRight.hidden&&this.itemsData.length>0){value.push(yAxisRight.screenToValue(y))}return{event:event,what:what,pageX:event.srcEvent?event.srcEvent.pageX:event.pageX,pageY:event.srcEvent?event.srcEvent.pageY:event.pageY,x:x,y:y,time:time,value:value}};Graph2d.prototype._createConfigurator=function(){return new Configurator(this,this.dom.container,configureOptions)};module.exports=Graph2d},function(module,exports,__webpack_require__){\"use strict\";exports.util=__webpack_require__(2);exports.DOMutil=__webpack_require__(14);exports.DataSet=__webpack_require__(11);exports.DataView=__webpack_require__(12);exports.Queue=__webpack_require__(43);exports.Network=__webpack_require__(182);exports.network={Images:__webpack_require__(116),dotparser:__webpack_require__(114),gephiParser:__webpack_require__(115),allOptions:__webpack_require__(122)};exports.network.convertDot=function(input){return exports.network.dotparser.DOTToGraph(input)};exports.network.convertGephi=function(input,options){return exports.network.gephiParser.parseGephi(input,options)};exports.moment=__webpack_require__(9);exports.Hammer=__webpack_require__(10);exports.keycharm=__webpack_require__(35)},function(module,exports,__webpack_require__){\"use strict\";__webpack_require__(183);var Emitter=__webpack_require__(44);var util=__webpack_require__(2);var dotparser=__webpack_require__(114);var gephiParser=__webpack_require__(115);var Activator=__webpack_require__(97);var locales=__webpack_require__(184);var Images=__webpack_require__(116)[\"default\"];var Groups=__webpack_require__(186)[\"default\"];var NodesHandler=__webpack_require__(187)[\"default\"];var EdgesHandler=__webpack_require__(214)[\"default\"];var PhysicsEngine=__webpack_require__(220)[\"default\"];var ClusterEngine=__webpack_require__(227)[\"default\"];var CanvasRenderer=__webpack_require__(229)[\"default\"];var Canvas=__webpack_require__(230)[\"default\"];var View=__webpack_require__(231)[\"default\"];var InteractionHandler=__webpack_require__(232)[\"default\"];var SelectionHandler=__webpack_require__(234)[\"default\"];var LayoutEngine=__webpack_require__(235)[\"default\"];var ManipulationSystem=__webpack_require__(237)[\"default\"];var Configurator=__webpack_require__(71)[\"default\"];var Validator=__webpack_require__(15)[\"default\"];var _require=__webpack_require__(15),printStyle=_require.printStyle;var _require2=__webpack_require__(122),allOptions=_require2.allOptions,configureOptions=_require2.configureOptions;var KamadaKawai=__webpack_require__(238)[\"default\"];function Network(container,data,options){var _this=this;if(!(this instanceof Network)){throw new SyntaxError(\"Constructor must be called with the new operator\")}this.options={};this.defaultOptions={locale:\"en\",locales:locales,clickToUse:false};util.extend(this.options,this.defaultOptions);this.body={container:container,nodes:{},nodeIndices:[],edges:{},edgeIndices:[],emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function onTap(){},onTouch:function onTouch(){},onDoubleTap:function onDoubleTap(){},onHold:function onHold(){},onDragStart:function onDragStart(){},onDrag:function onDrag(){},onDragEnd:function onDragEnd(){},onMouseWheel:function onMouseWheel(){},onPinch:function onPinch(){},onMouseMove:function onMouseMove(){},onRelease:function onRelease(){},onContext:function onContext(){}},data:{nodes:null,edges:null},functions:{createNode:function createNode(){},createEdge:function createEdge(){},getPointer:function getPointer(){}},modules:{},view:{scale:1,translation:{x:0,y:0}}};this.bindEventListeners();this.images=new Images(function(){return _this.body.emitter.emit(\"_requestRedraw\")});this.groups=new Groups;this.canvas=new Canvas(this.body);this.selectionHandler=new SelectionHandler(this.body,this.canvas);this.interactionHandler=new InteractionHandler(this.body,this.canvas,this.selectionHandler);this.view=new View(this.body,this.canvas);this.renderer=new CanvasRenderer(this.body,this.canvas);this.physics=new PhysicsEngine(this.body);this.layoutEngine=new LayoutEngine(this.body);this.clustering=new ClusterEngine(this.body);this.manipulation=new ManipulationSystem(this.body,this.canvas,this.selectionHandler);this.nodesHandler=new NodesHandler(this.body,this.images,this.groups,this.layoutEngine);this.edgesHandler=new EdgesHandler(this.body,this.images,this.groups);this.body.modules[\"kamadaKawai\"]=new KamadaKawai(this.body,150,.05);this.body.modules[\"clustering\"]=this.clustering;this.canvas._create();this.setOptions(options);this.setData(data)}Emitter(Network.prototype);Network.prototype.setOptions=function(options){var _this2=this;if(options!==undefined){var errorFound=Validator.validate(options,allOptions);if(errorFound===true){console.log(\"%cErrors have been found in the supplied options object.\",printStyle)}var fields=[\"locale\",\"locales\",\"clickToUse\"];util.selectiveDeepExtend(fields,this.options,options);options=this.layoutEngine.setOptions(options.layout,options);this.canvas.setOptions(options);this.groups.setOptions(options.groups);this.nodesHandler.setOptions(options.nodes);this.edgesHandler.setOptions(options.edges);this.physics.setOptions(options.physics);this.manipulation.setOptions(options.manipulation,options,this.options);this.interactionHandler.setOptions(options.interaction);this.renderer.setOptions(options.interaction);this.selectionHandler.setOptions(options.interaction);if(options.groups!==undefined){this.body.emitter.emit(\"refreshNodes\")}if(\"configure\"in options){if(!this.configurator){this.configurator=new Configurator(this,this.body.container,configureOptions,this.canvas.pixelRatio)}this.configurator.setOptions(options.configure)}if(this.configurator&&this.configurator.options.enabled===true){var networkOptions={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};util.deepExtend(networkOptions.nodes,this.nodesHandler.options);util.deepExtend(networkOptions.edges,this.edgesHandler.options);util.deepExtend(networkOptions.layout,this.layoutEngine.options);util.deepExtend(networkOptions.interaction,this.selectionHandler.options);util.deepExtend(networkOptions.interaction,this.renderer.options);util.deepExtend(networkOptions.interaction,this.interactionHandler.options);util.deepExtend(networkOptions.manipulation,this.manipulation.options);util.deepExtend(networkOptions.physics,this.physics.options);util.deepExtend(networkOptions.global,this.canvas.options);util.deepExtend(networkOptions.global,this.options);this.configurator.setModuleOptions(networkOptions)}if(options.clickToUse!==undefined){if(options.clickToUse===true){if(this.activator===undefined){this.activator=new Activator(this.canvas.frame);this.activator.on(\"change\",function(){_this2.body.emitter.emit(\"activate\")})}}else{if(this.activator!==undefined){this.activator.destroy();delete this.activator}this.body.emitter.emit(\"activate\")}}else{this.body.emitter.emit(\"activate\")}this.canvas.setSize();this.body.emitter.emit(\"startSimulation\")}};Network.prototype._updateVisibleIndices=function(){var nodes=this.body.nodes;var edges=this.body.edges;this.body.nodeIndices=[];this.body.edgeIndices=[];for(var nodeId in nodes){if(nodes.hasOwnProperty(nodeId)){if(!this.clustering._isClusteredNode(nodeId)&&nodes[nodeId].options.hidden===false){this.body.nodeIndices.push(nodes[nodeId].id)}}}for(var edgeId in edges){if(edges.hasOwnProperty(edgeId)){var edge=edges[edgeId];var fromNode=nodes[edge.fromId];var toNode=nodes[edge.toId];var edgeNodesPresent=fromNode!==undefined&&toNode!==undefined;var isVisible=!this.clustering._isClusteredEdge(edgeId)&&edge.options.hidden===false&&edgeNodesPresent&&fromNode.options.hidden===false&&toNode.options.hidden===false;if(isVisible){this.body.edgeIndices.push(edge.id)}}}};Network.prototype.bindEventListeners=function(){var _this3=this;this.body.emitter.on(\"_dataChanged\",function(){_this3.edgesHandler._updateState();_this3.body.emitter.emit(\"_dataUpdated\")});this.body.emitter.on(\"_dataUpdated\",function(){_this3.clustering._updateState();_this3._updateVisibleIndices();_this3._updateValueRange(_this3.body.nodes);_this3._updateValueRange(_this3.body.edges);_this3.body.emitter.emit(\"startSimulation\");_this3.body.emitter.emit(\"_requestRedraw\")})};Network.prototype.setData=function(data){this.body.emitter.emit(\"resetPhysics\");this.body.emitter.emit(\"_resetData\");this.selectionHandler.unselectAll();if(data&&data.dot&&(data.nodes||data.edges)){throw new SyntaxError('Data must contain either parameter \"dot\" or '+' parameter pair \"nodes\" and \"edges\", but not both.')}this.setOptions(data&&data.options);if(data&&data.dot){console.log(\"The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);\");var dotData=dotparser.DOTToGraph(data.dot);this.setData(dotData);return}else if(data&&data.gephi){console.log(\"The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);\");var gephiData=gephiParser.parseGephi(data.gephi);this.setData(gephiData);return}else{this.nodesHandler.setData(data&&data.nodes,true);this.edgesHandler.setData(data&&data.edges,true)}this.body.emitter.emit(\"_dataChanged\");this.body.emitter.emit(\"_dataLoaded\");this.body.emitter.emit(\"initPhysics\")};Network.prototype.destroy=function(){this.body.emitter.emit(\"destroy\");this.body.emitter.off();this.off();delete this.groups;delete this.canvas;delete this.selectionHandler;delete this.interactionHandler;delete this.view;delete this.renderer;delete this.physics;delete this.layoutEngine;delete this.clustering;delete this.manipulation;delete this.nodesHandler;delete this.edgesHandler;delete this.configurator;delete this.images;for(var nodeId in this.body.nodes){if(!this.body.nodes.hasOwnProperty(nodeId))continue;delete this.body.nodes[nodeId]}for(var edgeId in this.body.edges){if(!this.body.edges.hasOwnProperty(edgeId))continue;delete this.body.edges[edgeId]}util.recursiveDOMDelete(this.body.container)};Network.prototype._updateValueRange=function(obj){var id;var valueMin=undefined;var valueMax=undefined;var valueTotal=0;for(id in obj){if(obj.hasOwnProperty(id)){var value=obj[id].getValue();if(value!==undefined){valueMin=valueMin===undefined?value:Math.min(value,valueMin);valueMax=valueMax===undefined?value:Math.max(value,valueMax);valueTotal+=value}}}if(valueMin!==undefined&&valueMax!==undefined){for(id in obj){if(obj.hasOwnProperty(id)){obj[id].setValueRange(valueMin,valueMax,valueTotal)}}}};Network.prototype.isActive=function(){return!this.activator||this.activator.active};Network.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)};Network.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)};Network.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)};Network.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)};Network.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)};Network.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)};Network.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)};Network.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)};Network.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)};Network.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)};Network.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)};Network.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)};Network.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)};Network.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)};Network.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)};Network.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)};Network.prototype.editNodeMode=function(){console.log(\"Deprecated: Please use editNode instead of editNodeMode.\");return this.manipulation.editNode.apply(this.manipulation,arguments)};Network.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)};Network.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)};Network.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)};Network.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)};Network.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)};Network.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)};Network.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)};Network.prototype.getConnectedNodes=function(objectId){if(this.body.nodes[objectId]!==undefined){return this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments)}else{return this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)}};Network.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)};Network.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)};Network.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)};Network.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)};Network.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)};Network.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)};Network.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)};Network.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)};Network.prototype.getNodeAt=function(){var node=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);if(node!==undefined&&node.id!==undefined){return node.id}return node};Network.prototype.getEdgeAt=function(){var edge=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);if(edge!==undefined&&edge.id!==undefined){return edge.id}return edge};Network.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)};Network.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)};Network.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments);this.redraw()};Network.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)};Network.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)};Network.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)};Network.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)};Network.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)};Network.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)};Network.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)};Network.prototype.getOptionsFromConfigurator=function(){var options={};if(this.configurator){options=this.configurator.getOptions.apply(this.configurator)}return options};module.exports=Network},function(module,exports,__webpack_require__){\"use strict\";if(typeof CanvasRenderingContext2D!==\"undefined\"){CanvasRenderingContext2D.prototype.circle=function(x,y,r){this.beginPath();this.arc(x,y,r,0,2*Math.PI,false);this.closePath()};CanvasRenderingContext2D.prototype.square=function(x,y,r){this.beginPath();this.rect(x-r,y-r,r*2,r*2);this.closePath()};CanvasRenderingContext2D.prototype.triangle=function(x,y,r){this.beginPath();r*=1.15;y+=.275*r;var s=r*2;var s2=s/2;var ir=Math.sqrt(3)/6*s;var h=Math.sqrt(s*s-s2*s2);this.moveTo(x,y-(h-ir));this.lineTo(x+s2,y+ir);this.lineTo(x-s2,y+ir);this.lineTo(x,y-(h-ir));this.closePath()};CanvasRenderingContext2D.prototype.triangleDown=function(x,y,r){this.beginPath();r*=1.15;y-=.275*r;var s=r*2;var s2=s/2;var ir=Math.sqrt(3)/6*s;var h=Math.sqrt(s*s-s2*s2);this.moveTo(x,y+(h-ir));this.lineTo(x+s2,y-ir);this.lineTo(x-s2,y-ir);this.lineTo(x,y+(h-ir));this.closePath()};CanvasRenderingContext2D.prototype.star=function(x,y,r){this.beginPath();r*=.82;y+=.1*r;for(var n=0;n<10;n++){var radius=n%2===0?r*1.3:r*.5;this.lineTo(x+radius*Math.sin(n*2*Math.PI/10),y-radius*Math.cos(n*2*Math.PI/10))}this.closePath()};CanvasRenderingContext2D.prototype.diamond=function(x,y,r){this.beginPath();this.lineTo(x,y+r);this.lineTo(x+r,y);this.lineTo(x,y-r);this.lineTo(x-r,y);this.closePath()};CanvasRenderingContext2D.prototype.roundRect=function(x,y,w,h,r){var r2d=Math.PI/180;if(w-2*r<0){r=w/2}if(h-2*r<0){r=h/2}this.beginPath();this.moveTo(x+r,y);this.lineTo(x+w-r,y);this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false);this.lineTo(x+w,y+h-r);this.arc(x+w-r,y+h-r,r,0,r2d*90,false);this.lineTo(x+r,y+h);this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false);this.lineTo(x,y+r);this.arc(x+r,y+r,r,r2d*180,r2d*270,false);this.closePath()};CanvasRenderingContext2D.prototype.ellipse_vis=function(x,y,w,h){var kappa=.5522848,ox=w/2*kappa,oy=h/2*kappa,xe=x+w,ye=y+h,xm=x+w/2,ym=y+h/2;this.beginPath();this.moveTo(x,ym);this.bezierCurveTo(x,ym-oy,xm-ox,y,xm,y);this.bezierCurveTo(xm+ox,y,xe,ym-oy,xe,ym);this.bezierCurveTo(xe,ym+oy,xm+ox,ye,xm,ye);this.bezierCurveTo(xm-ox,ye,x,ym+oy,x,ym);this.closePath()};CanvasRenderingContext2D.prototype.database=function(x,y,w,h){var f=1/3;var wEllipse=w;var hEllipse=h*f;var kappa=.5522848,ox=wEllipse/2*kappa,oy=hEllipse/2*kappa,xe=x+wEllipse,ye=y+hEllipse,xm=x+wEllipse/2,ym=y+hEllipse/2,ymb=y+(h-hEllipse/2),yeb=y+h;this.beginPath();this.moveTo(xe,ym);this.bezierCurveTo(xe,ym+oy,xm+ox,ye,xm,ye);this.bezierCurveTo(xm-ox,ye,x,ym+oy,x,ym);this.bezierCurveTo(x,ym-oy,xm-ox,y,xm,y);this.bezierCurveTo(xm+ox,y,xe,ym-oy,xe,ym);this.lineTo(xe,ymb);this.bezierCurveTo(xe,ymb+oy,xm+ox,yeb,xm,yeb);this.bezierCurveTo(xm-ox,yeb,x,ymb+oy,x,ymb);this.lineTo(x,ym)};CanvasRenderingContext2D.prototype.dashedLine=function(x,y,x2,y2,pattern){this.beginPath();this.moveTo(x,y);var patternLength=pattern.length;var dx=x2-x;var dy=y2-y;var slope=dy/dx;var distRemaining=Math.sqrt(dx*dx+dy*dy);var patternIndex=0;var draw=true;var xStep=0;var dashLength=pattern[0];while(distRemaining>=.1){dashLength=pattern[patternIndex++%patternLength];if(dashLength>distRemaining){dashLength=distRemaining}xStep=Math.sqrt(dashLength*dashLength/(1+slope*slope));xStep=dx<0?-xStep:xStep;x+=xStep;y+=slope*xStep;if(draw===true){this.lineTo(x,y)}else{this.moveTo(x,y)}distRemaining-=dashLength;draw=!draw}};CanvasRenderingContext2D.prototype.hexagon=function(x,y,r){this.beginPath();var sides=6;var a=Math.PI*2/sides;this.moveTo(x+r,y);for(var i=1;i<sides;i++){this.lineTo(x+r*Math.cos(a*i),y+r*Math.sin(a*i))}this.closePath()}}},function(module,exports,__webpack_require__){\"use strict\";exports[\"en\"]={edit:\"Edit\",del:\"Delete selected\",back:\"Back\",addNode:\"Add Node\",addEdge:\"Add Edge\",editNode:\"Edit Node\",editEdge:\"Edit Edge\",addDescription:\"Click in an empty space to place a new node.\",edgeDescription:\"Click on a node and drag the edge to another node to connect them.\",editEdgeDescription:\"Click on the control points and drag them to a node to connect to it.\",createEdgeError:\"Cannot link edges to a cluster.\",deleteClusterError:\"Clusters cannot be deleted.\",editClusterError:\"Clusters cannot be edited.\"};exports[\"en_EN\"]=exports[\"en\"];exports[\"en_US\"]=exports[\"en\"];exports[\"de\"]={edit:\"Editieren\",del:\"Lösche Auswahl\",back:\"Zurück\",addNode:\"Knoten hinzufügen\",addEdge:\"Kante hinzufügen\",editNode:\"Knoten editieren\",editEdge:\"Kante editieren\",addDescription:\"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.\",edgeDescription:\"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.\",editEdgeDescription:\"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.\",createEdgeError:\"Es ist nicht möglich, Kanten mit Clustern zu verbinden.\",deleteClusterError:\"Cluster können nicht gelöscht werden.\",editClusterError:\"Cluster können nicht editiert werden.\"};exports[\"de_DE\"]=exports[\"de\"];exports[\"es\"]={edit:\"Editar\",del:\"Eliminar selección\",back:\"Átras\",addNode:\"Añadir nodo\",addEdge:\"Añadir arista\",editNode:\"Editar nodo\",editEdge:\"Editar arista\",addDescription:\"Haga clic en un lugar vacío para colocar un nuevo nodo.\",edgeDescription:\"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.\",editEdgeDescription:\"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.\",createEdgeError:\"No se puede conectar una arista a un grupo.\",deleteClusterError:\"No es posible eliminar grupos.\",editClusterError:\"No es posible editar grupos.\"};exports[\"es_ES\"]=exports[\"es\"];exports[\"it\"]={edit:\"Modifica\",del:\"Cancella la selezione\",back:\"Indietro\",addNode:\"Aggiungi un nodo\",addEdge:\"Aggiungi un vertice\",editNode:\"Modifica il nodo\",editEdge:\"Modifica il vertice\",addDescription:\"Clicca per aggiungere un nuovo nodo\",edgeDescription:\"Clicca su un nodo e trascinalo ad un altro nodo per connetterli.\",editEdgeDescription:\"Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.\",createEdgeError:\"Non si possono collegare vertici ad un cluster\",deleteClusterError:\"I cluster non possono essere cancellati\",editClusterError:\"I clusters non possono essere modificati.\"};exports[\"it_IT\"]=exports[\"it\"];exports[\"nl\"]={edit:\"Wijzigen\",del:\"Selectie verwijderen\",\nback:\"Terug\",addNode:\"Node toevoegen\",addEdge:\"Link toevoegen\",editNode:\"Node wijzigen\",editEdge:\"Link wijzigen\",addDescription:\"Klik op een leeg gebied om een nieuwe node te maken.\",edgeDescription:\"Klik op een node en sleep de link naar een andere node om ze te verbinden.\",editEdgeDescription:\"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.\",createEdgeError:\"Kan geen link maken naar een cluster.\",deleteClusterError:\"Clusters kunnen niet worden verwijderd.\",editClusterError:\"Clusters kunnen niet worden aangepast.\"};exports[\"nl_NL\"]=exports[\"nl\"];exports[\"nl_BE\"]=exports[\"nl\"];exports[\"pt-br\"]={edit:\"Editar\",del:\"Remover selecionado\",back:\"Voltar\",addNode:\"Adicionar nó\",addEdge:\"Adicionar aresta\",editNode:\"Editar nó\",editEdge:\"Editar aresta\",addDescription:\"Clique em um espaço em branco para adicionar um novo nó\",edgeDescription:\"Clique em um nó e arraste a aresta até outro nó para conectá-los\",editEdgeDescription:\"Clique nos pontos de controle e os arraste para um nó para conectá-los\",createEdgeError:\"Não foi possível linkar arestas a um cluster.\",deleteClusterError:\"Clusters não puderam ser removidos.\",editClusterError:\"Clusters não puderam ser editados.\"};exports[\"pt-BR\"]=exports[\"pt-br\"];exports[\"pt_BR\"]=exports[\"pt-br\"];exports[\"pt_br\"]=exports[\"pt-br\"];exports[\"ru\"]={edit:\"Редактировать\",del:\"Удалить выбранное\",back:\"Назад\",addNode:\"Добавить узел\",addEdge:\"Добавить ребро\",editNode:\"Редактировать узел\",editEdge:\"Редактировать ребро\",addDescription:\"Кликните в свободное место, чтобы добавить новый узел.\",edgeDescription:\"Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.\",editEdgeDescription:\"Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.\",createEdgeError:\"Невозможно соединить ребра в кластер.\",deleteClusterError:\"Кластеры не могут быть удалены\",editClusterError:\"Кластеры недоступны для редактирования.\"};exports[\"ru_RU\"]=exports[\"ru\"];exports[\"cn\"]={edit:\"编辑\",del:\"删除选定\",back:\"返回\",addNode:\"添加节点\",addEdge:\"添加连接线\",editNode:\"编辑节点\",editEdge:\"编辑连接线\",addDescription:\"单击空白处放置新节点。\",edgeDescription:\"单击某个节点并将该连接线拖动到另一个节点以连接它们。\",editEdgeDescription:\"单击控制节点并将它们拖到节点上连接。\",createEdgeError:\"无法将连接线连接到群集。\",deleteClusterError:\"无法删除群集。\",editClusterError:\"无法编辑群集。\"};exports[\"zh_CN\"]=exports[\"cn\"]},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CachedImage=function(){function CachedImage(){(0,_classCallCheck3[\"default\"])(this,CachedImage);this.NUM_ITERATIONS=4;this.image=new Image;this.canvas=document.createElement(\"canvas\")}(0,_createClass3[\"default\"])(CachedImage,[{key:\"init\",value:function init(){if(this.initialized())return;this.src=this.image.src;var w=this.image.width;var h=this.image.height;this.width=w;this.height=h;var h2=Math.floor(h/2);var h4=Math.floor(h/4);var h8=Math.floor(h/8);var h16=Math.floor(h/16);var w2=Math.floor(w/2);var w4=Math.floor(w/4);var w8=Math.floor(w/8);var w16=Math.floor(w/16);this.canvas.width=3*w4;this.canvas.height=h2;this.coordinates=[[0,0,w2,h2],[w2,0,w4,h4],[w2,h4,w8,h8],[5*w8,h4,w16,h16]];this._fillMipMap()}},{key:\"initialized\",value:function initialized(){return this.coordinates!==undefined}},{key:\"_fillMipMap\",value:function _fillMipMap(){var ctx=this.canvas.getContext(\"2d\");var to=this.coordinates[0];ctx.drawImage(this.image,to[0],to[1],to[2],to[3]);for(var iterations=1;iterations<this.NUM_ITERATIONS;iterations++){var from=this.coordinates[iterations-1];var _to=this.coordinates[iterations];ctx.drawImage(this.canvas,from[0],from[1],from[2],from[3],_to[0],_to[1],_to[2],_to[3])}}},{key:\"drawImageAtPosition\",value:function drawImageAtPosition(ctx,factor,left,top,width,height){if(!this.initialized())return;if(factor>2){factor*=.5;var iterations=0;while(factor>2&&iterations<this.NUM_ITERATIONS){factor*=.5;iterations+=1}if(iterations>=this.NUM_ITERATIONS){iterations=this.NUM_ITERATIONS-1}var from=this.coordinates[iterations];ctx.drawImage(this.canvas,from[0],from[1],from[2],from[3],left,top,width,height)}else{ctx.drawImage(this.image,left,top,width,height)}}}]);return CachedImage}();exports[\"default\"]=CachedImage},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Groups=function(){function Groups(){(0,_classCallCheck3[\"default\"])(this,Groups);this.clear();this.defaultIndex=0;this.groupsArray=[];this.groupIndex=0;this.defaultGroups=[{border:\"#2B7CE9\",background:\"#97C2FC\",highlight:{border:\"#2B7CE9\",background:\"#D2E5FF\"},hover:{border:\"#2B7CE9\",background:\"#D2E5FF\"}},{border:\"#FFA500\",background:\"#FFFF00\",highlight:{border:\"#FFA500\",background:\"#FFFFA3\"},hover:{border:\"#FFA500\",background:\"#FFFFA3\"}},{border:\"#FA0A10\",background:\"#FB7E81\",highlight:{border:\"#FA0A10\",background:\"#FFAFB1\"},hover:{border:\"#FA0A10\",background:\"#FFAFB1\"}},{border:\"#41A906\",background:\"#7BE141\",highlight:{border:\"#41A906\",background:\"#A1EC76\"},hover:{border:\"#41A906\",background:\"#A1EC76\"}},{border:\"#E129F0\",background:\"#EB7DF4\",highlight:{border:\"#E129F0\",background:\"#F0B3F5\"},hover:{border:\"#E129F0\",background:\"#F0B3F5\"}},{border:\"#7C29F0\",background:\"#AD85E4\",highlight:{border:\"#7C29F0\",background:\"#D3BDF0\"},hover:{border:\"#7C29F0\",background:\"#D3BDF0\"}},{border:\"#C37F00\",background:\"#FFA807\",highlight:{border:\"#C37F00\",background:\"#FFCA66\"},hover:{border:\"#C37F00\",background:\"#FFCA66\"}},{border:\"#4220FB\",background:\"#6E6EFD\",highlight:{border:\"#4220FB\",background:\"#9B9BFD\"},hover:{border:\"#4220FB\",background:\"#9B9BFD\"}},{border:\"#FD5A77\",background:\"#FFC0CB\",highlight:{border:\"#FD5A77\",background:\"#FFD1D9\"},hover:{border:\"#FD5A77\",background:\"#FFD1D9\"}},{border:\"#4AD63A\",background:\"#C2FABC\",highlight:{border:\"#4AD63A\",background:\"#E6FFE3\"},hover:{border:\"#4AD63A\",background:\"#E6FFE3\"}},{border:\"#990000\",background:\"#EE0000\",highlight:{border:\"#BB0000\",background:\"#FF3333\"},hover:{border:\"#BB0000\",background:\"#FF3333\"}},{border:\"#FF6000\",background:\"#FF6000\",highlight:{border:\"#FF6000\",background:\"#FF6000\"},hover:{border:\"#FF6000\",background:\"#FF6000\"}},{border:\"#97C2FC\",background:\"#2B7CE9\",highlight:{border:\"#D2E5FF\",background:\"#2B7CE9\"},hover:{border:\"#D2E5FF\",background:\"#2B7CE9\"}},{border:\"#399605\",background:\"#255C03\",highlight:{border:\"#399605\",background:\"#255C03\"},hover:{border:\"#399605\",background:\"#255C03\"}},{border:\"#B70054\",background:\"#FF007E\",highlight:{border:\"#B70054\",background:\"#FF007E\"},hover:{border:\"#B70054\",background:\"#FF007E\"}},{border:\"#AD85E4\",background:\"#7C29F0\",highlight:{border:\"#D3BDF0\",background:\"#7C29F0\"},hover:{border:\"#D3BDF0\",background:\"#7C29F0\"}},{border:\"#4557FA\",background:\"#000EA1\",highlight:{border:\"#6E6EFD\",background:\"#000EA1\"},hover:{border:\"#6E6EFD\",background:\"#000EA1\"}},{border:\"#FFC0CB\",background:\"#FD5A77\",highlight:{border:\"#FFD1D9\",background:\"#FD5A77\"},hover:{border:\"#FFD1D9\",background:\"#FD5A77\"}},{border:\"#C2FABC\",background:\"#74D66A\",highlight:{border:\"#E6FFE3\",background:\"#74D66A\"},hover:{border:\"#E6FFE3\",background:\"#74D66A\"}},{border:\"#EE0000\",background:\"#990000\",highlight:{border:\"#FF3333\",background:\"#BB0000\"},hover:{border:\"#FF3333\",background:\"#BB0000\"}}];this.options={};this.defaultOptions={useDefaultGroups:true};util.extend(this.options,this.defaultOptions)}(0,_createClass3[\"default\"])(Groups,[{key:\"setOptions\",value:function setOptions(options){var optionFields=[\"useDefaultGroups\"];if(options!==undefined){for(var groupName in options){if(options.hasOwnProperty(groupName)){if(optionFields.indexOf(groupName)===-1){var group=options[groupName];this.add(groupName,group)}}}}}},{key:\"clear\",value:function clear(){this.groups={};this.groupsArray=[]}},{key:\"get\",value:function get(groupname){var shouldCreate=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var group=this.groups[groupname];if(group===undefined&&shouldCreate){if(this.options.useDefaultGroups===false&&this.groupsArray.length>0){var index=this.groupIndex%this.groupsArray.length;this.groupIndex++;group={};group.color=this.groups[this.groupsArray[index]];this.groups[groupname]=group}else{var _index=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++;group={};group.color=this.defaultGroups[_index];this.groups[groupname]=group}}return group}},{key:\"add\",value:function add(groupName,style){this.groups[groupName]=style;this.groupsArray.push(groupName);return style}}]);return Groups}();exports[\"default\"]=Groups},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Node=__webpack_require__(47)[\"default\"];var NodesHandler=function(){function NodesHandler(body,images,groups,layoutEngine){var _this=this;(0,_classCallCheck3[\"default\"])(this,NodesHandler);this.body=body;this.images=images;this.groups=groups;this.layoutEngine=layoutEngine;this.body.functions.createNode=this.create.bind(this);this.nodesListeners={add:function add(event,params){_this.add(params.items)},update:function update(event,params){_this.update(params.items,params.data,params.oldData)},remove:function remove(event,params){_this.remove(params.items)}};this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:undefined,color:{border:\"#2B7CE9\",background:\"#97C2FC\",highlight:{border:\"#2B7CE9\",background:\"#D2E5FF\"},hover:{border:\"#2B7CE9\",background:\"#D2E5FF\"}},fixed:{x:false,y:false},font:{color:\"#343434\",size:14,face:\"arial\",background:\"none\",strokeWidth:0,strokeColor:\"#ffffff\",align:\"center\",vadjust:0,multi:false,bold:{mod:\"bold\"},boldital:{mod:\"bold italic\"},ital:{mod:\"italic\"},mono:{mod:\"\",size:15,face:\"monospace\",vadjust:2}},group:undefined,hidden:false,icon:{face:\"FontAwesome\",code:undefined,size:50,color:\"#2B7CE9\"},image:undefined,label:undefined,labelHighlightBold:true,level:undefined,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:true,scaling:{min:10,max:30,label:{enabled:false,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function customScalingFunction(min,max,total,value){if(max===min){return.5}else{var scale=1/(max-min);return Math.max(0,(value-min)*scale)}}},shadow:{enabled:false,color:\"rgba(0,0,0,0.5)\",size:10,x:5,y:5},shape:\"ellipse\",shapeProperties:{borderDashes:false,borderRadius:6,interpolation:true,useImageSize:false,useBorderWithImage:false},size:25,title:undefined,value:undefined,x:undefined,y:undefined};if(this.defaultOptions.mass<=0){throw\"Internal error: mass in defaultOptions of NodesHandler may not be zero or negative\"}this.options=util.bridgeObject(this.defaultOptions);this.bindEventListeners()}(0,_createClass3[\"default\"])(NodesHandler,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this2=this;this.body.emitter.on(\"refreshNodes\",this.refresh.bind(this));this.body.emitter.on(\"refresh\",this.refresh.bind(this));this.body.emitter.on(\"destroy\",function(){util.forEach(_this2.nodesListeners,function(callback,event){if(_this2.body.data.nodes)_this2.body.data.nodes.off(event,callback)});delete _this2.body.functions.createNode;delete _this2.nodesListeners.add;delete _this2.nodesListeners.update;delete _this2.nodesListeners.remove;delete _this2.nodesListeners})}},{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){Node.parseOptions(this.options,options);if(options.shape!==undefined){for(var nodeId in this.body.nodes){if(this.body.nodes.hasOwnProperty(nodeId)){this.body.nodes[nodeId].updateShape()}}}if(options.font!==undefined){for(var _nodeId in this.body.nodes){if(this.body.nodes.hasOwnProperty(_nodeId)){this.body.nodes[_nodeId].updateLabelModule();this.body.nodes[_nodeId].needsRefresh()}}}if(options.size!==undefined){for(var _nodeId2 in this.body.nodes){if(this.body.nodes.hasOwnProperty(_nodeId2)){this.body.nodes[_nodeId2].needsRefresh()}}}if(options.hidden!==undefined||options.physics!==undefined){this.body.emitter.emit(\"_dataChanged\")}}}},{key:\"setData\",value:function setData(nodes){var doNotEmit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var oldNodesData=this.body.data.nodes;if(nodes instanceof DataSet||nodes instanceof DataView){this.body.data.nodes=nodes}else if(Array.isArray(nodes)){this.body.data.nodes=new DataSet;this.body.data.nodes.add(nodes)}else if(!nodes){this.body.data.nodes=new DataSet}else{throw new TypeError(\"Array or DataSet expected\")}if(oldNodesData){util.forEach(this.nodesListeners,function(callback,event){oldNodesData.off(event,callback)})}this.body.nodes={};if(this.body.data.nodes){var me=this;util.forEach(this.nodesListeners,function(callback,event){me.body.data.nodes.on(event,callback)});var ids=this.body.data.nodes.getIds();this.add(ids,true)}if(doNotEmit===false){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"add\",value:function add(ids){var doNotEmit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var id=void 0;var newNodes=[];for(var i=0;i<ids.length;i++){id=ids[i];var properties=this.body.data.nodes.get(id);var node=this.create(properties);newNodes.push(node);this.body.nodes[id]=node}this.layoutEngine.positionInitially(newNodes);if(doNotEmit===false){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"update\",value:function update(ids,changedData,oldData){var nodes=this.body.nodes;var dataChanged=false;for(var i=0;i<ids.length;i++){var id=ids[i];var node=nodes[id];var data=changedData[i];if(node!==undefined){if(node.setOptions(data)){dataChanged=true}}else{dataChanged=true;node=this.create(data);nodes[id]=node}}if(!dataChanged&&oldData!==undefined){dataChanged=changedData.some(function(newValue,index){var oldValue=oldData[index];return oldValue&&oldValue.level!==newValue.level})}if(dataChanged===true){this.body.emitter.emit(\"_dataChanged\")}else{this.body.emitter.emit(\"_dataUpdated\")}}},{key:\"remove\",value:function remove(ids){var nodes=this.body.nodes;for(var i=0;i<ids.length;i++){var id=ids[i];delete nodes[id]}this.body.emitter.emit(\"_dataChanged\")}},{key:\"create\",value:function create(properties){var constructorClass=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Node;return new constructorClass(properties,this.body,this.images,this.groups,this.options,this.defaultOptions)}},{key:\"refresh\",value:function refresh(){var _this3=this;var clearPositions=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;util.forEach(this.body.nodes,function(node,nodeId){var data=_this3.body.data.nodes.get(nodeId);if(data!==undefined){if(clearPositions===true){node.setOptions({x:null,y:null})}node.setOptions({fixed:false});node.setOptions(data)}})}},{key:\"getPositions\",value:function getPositions(ids){var dataArray={};if(ids!==undefined){if(Array.isArray(ids)===true){for(var i=0;i<ids.length;i++){if(this.body.nodes[ids[i]]!==undefined){var node=this.body.nodes[ids[i]];dataArray[ids[i]]={x:Math.round(node.x),y:Math.round(node.y)}}}}else{if(this.body.nodes[ids]!==undefined){var _node=this.body.nodes[ids];dataArray[ids]={x:Math.round(_node.x),y:Math.round(_node.y)}}}}else{for(var _i=0;_i<this.body.nodeIndices.length;_i++){var _node2=this.body.nodes[this.body.nodeIndices[_i]];dataArray[this.body.nodeIndices[_i]]={x:Math.round(_node2.x),y:Math.round(_node2.y)}}}return dataArray}},{key:\"storePositions\",value:function storePositions(){var dataArray=[];var dataset=this.body.data.nodes.getDataSet();for(var nodeId in dataset._data){if(dataset._data.hasOwnProperty(nodeId)){var node=this.body.nodes[nodeId];if(dataset._data[nodeId].x!=Math.round(node.x)||dataset._data[nodeId].y!=Math.round(node.y)){dataArray.push({id:node.id,x:Math.round(node.x),y:Math.round(node.y)})}}}dataset.update(dataArray)}},{key:\"getBoundingBox\",value:function getBoundingBox(nodeId){if(this.body.nodes[nodeId]!==undefined){return this.body.nodes[nodeId].shape.boundingBox}}},{key:\"getConnectedNodes\",value:function getConnectedNodes(nodeId,direction){var nodeList=[];if(this.body.nodes[nodeId]!==undefined){var node=this.body.nodes[nodeId];var nodeObj={};for(var i=0;i<node.edges.length;i++){var edge=node.edges[i];if(direction!==\"to\"&&edge.toId==node.id){if(nodeObj[edge.fromId]===undefined){nodeList.push(edge.fromId);nodeObj[edge.fromId]=true}}else if(direction!==\"from\"&&edge.fromId==node.id){if(nodeObj[edge.toId]===undefined){nodeList.push(edge.toId);nodeObj[edge.toId]=true}}}}return nodeList}},{key:\"getConnectedEdges\",value:function getConnectedEdges(nodeId){var edgeList=[];if(this.body.nodes[nodeId]!==undefined){var node=this.body.nodes[nodeId];for(var i=0;i<node.edges.length;i++){edgeList.push(node.edges[i].id)}}else{console.log(\"NodeId provided for getConnectedEdges does not exist. Provided: \",nodeId)}return edgeList}},{key:\"moveNode\",value:function moveNode(nodeId,x,y){var _this4=this;if(this.body.nodes[nodeId]!==undefined){this.body.nodes[nodeId].x=Number(x);this.body.nodes[nodeId].y=Number(y);setTimeout(function(){_this4.body.emitter.emit(\"startSimulation\")},0)}else{console.log(\"Node id supplied to moveNode does not exist. Provided: \",nodeId)}}}]);return NodesHandler}();exports[\"default\"]=NodesHandler},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(189),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(49);__webpack_require__(60);module.exports=__webpack_require__(190)},function(module,exports,__webpack_require__){var classof=__webpack_require__(86);var ITERATOR=__webpack_require__(13)(\"iterator\");var Iterators=__webpack_require__(31);module.exports=__webpack_require__(7).isIterable=function(it){var O=Object(it);return O[ITERATOR]!==undefined||\"@@iterator\"in O||Iterators.hasOwnProperty(classof(O))}},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var LabelAccumulator=__webpack_require__(192)[\"default\"];var ComponentUtil=__webpack_require__(48)[\"default\"];var LabelSplitter=function(){function LabelSplitter(ctx,parent,selected,hover){var _this=this;(0,_classCallCheck3[\"default\"])(this,LabelSplitter);this.ctx=ctx;this.parent=parent;var textWidth=function textWidth(text,mod){if(text===undefined)return 0;var values=_this.parent.getFormattingValues(ctx,selected,hover,mod);var width=0;if(text!==\"\"){var measure=_this.ctx.measureText(text);width=measure.width}return{width:width,values:values}};this.lines=new LabelAccumulator(textWidth)}(0,_createClass3[\"default\"])(LabelSplitter,[{key:\"process\",value:function process(text){if(!ComponentUtil.isValidLabel(text)){return this.lines.finalize()}var font=this.parent.fontOptions;text=text.replace(/\\r\\n/g,\"\\n\");text=text.replace(/\\r/g,\"\\n\");var nlLines=String(text).split(\"\\n\");var lineCount=nlLines.length;if(font.multi){for(var i=0;i<lineCount;i++){var blocks=this.splitBlocks(nlLines[i],font.multi);if(blocks===undefined)continue;if(blocks.length===0){this.lines.newLine(\"\");continue}if(font.maxWdt>0){for(var j=0;j<blocks.length;j++){var mod=blocks[j].mod;var _text=blocks[j].text;this.splitStringIntoLines(_text,mod,true)}}else{for(var _j=0;_j<blocks.length;_j++){var _mod=blocks[_j].mod;var _text2=blocks[_j].text;this.lines.append(_text2,_mod)}}this.lines.newLine()}}else{if(font.maxWdt>0){for(var _i=0;_i<lineCount;_i++){this.splitStringIntoLines(nlLines[_i])}}else{for(var _i2=0;_i2<lineCount;_i2++){this.lines.newLine(nlLines[_i2])}}}return this.lines.finalize()}},{key:\"decodeMarkupSystem\",value:function decodeMarkupSystem(markupSystem){var system=\"none\";if(markupSystem===\"markdown\"||markupSystem===\"md\"){system=\"markdown\"}else if(markupSystem===true||markupSystem===\"html\"){system=\"html\"}return system}},{key:\"splitHtmlBlocks\",value:function splitHtmlBlocks(text){var blocks=[];var s={bold:false,ital:false,mono:false,spacing:false,position:0,buffer:\"\",modStack:[]};s.mod=function(){return this.modStack.length===0?\"normal\":this.modStack[0]};s.modName=function(){if(this.modStack.length===0)return\"normal\";else if(this.modStack[0]===\"mono\")return\"mono\";else{if(s.bold&&s.ital){return\"boldital\"}else if(s.bold){return\"bold\"}else if(s.ital){return\"ital\"}}};s.emitBlock=function(){var override=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(this.spacing){this.add(\" \");this.spacing=false}if(this.buffer.length>0){blocks.push({text:this.buffer,mod:this.modName()});this.buffer=\"\"}};s.add=function(text){if(text===\" \"){s.spacing=true}if(s.spacing){this.buffer+=\" \";this.spacing=false}if(text!=\" \"){this.buffer+=text}};while(s.position<text.length){var ch=text.charAt(s.position);if(/[ \\t]/.test(ch)){if(!s.mono){s.spacing=true}else{s.add(ch)}}else if(/</.test(ch)){if(!s.mono&&!s.bold&&/<b>/.test(text.substr(s.position,3))){s.emitBlock();s.bold=true;s.modStack.unshift(\"bold\");s.position+=2}else if(!s.mono&&!s.ital&&/<i>/.test(text.substr(s.position,3))){s.emitBlock();s.ital=true;s.modStack.unshift(\"ital\");s.position+=2}else if(!s.mono&&/<code>/.test(text.substr(s.position,6))){s.emitBlock();s.mono=true;s.modStack.unshift(\"mono\");s.position+=5}else if(!s.mono&&s.mod()===\"bold\"&&/<\\/b>/.test(text.substr(s.position,4))){s.emitBlock();s.bold=false;s.modStack.shift();s.position+=3}else if(!s.mono&&s.mod()===\"ital\"&&/<\\/i>/.test(text.substr(s.position,4))){s.emitBlock();s.ital=false;s.modStack.shift();s.position+=3}else if(s.mod()===\"mono\"&&/<\\/code>/.test(text.substr(s.position,7))){s.emitBlock();s.mono=false;s.modStack.shift();s.position+=6}else{s.add(ch)}}else if(/&/.test(ch)){if(/</.test(text.substr(s.position,4))){s.add(\"<\");s.position+=3}else if(/&/.test(text.substr(s.position,5))){s.add(\"&\");s.position+=4}else{s.add(\"&\")}}else{s.add(ch)}s.position++}s.emitBlock();return blocks}},{key:\"splitMarkdownBlocks\",value:function splitMarkdownBlocks(text){var blocks=[];var s={bold:false,ital:false,mono:false,beginable:true,spacing:false,position:0,buffer:\"\",modStack:[]};s.mod=function(){return this.modStack.length===0?\"normal\":this.modStack[0]};s.modName=function(){if(this.modStack.length===0)return\"normal\";else if(this.modStack[0]===\"mono\")return\"mono\";else{if(s.bold&&s.ital){return\"boldital\"}else if(s.bold){return\"bold\"}else if(s.ital){return\"ital\"}}};s.emitBlock=function(){var override=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(this.spacing){this.add(\" \");this.spacing=false}if(this.buffer.length>0){blocks.push({text:this.buffer,mod:this.modName()});this.buffer=\"\"}};s.add=function(text){if(text===\" \"){s.spacing=true}if(s.spacing){this.buffer+=\" \";this.spacing=false}if(text!=\" \"){this.buffer+=text}};while(s.position<text.length){var ch=text.charAt(s.position);if(/[ \\t]/.test(ch)){if(!s.mono){s.spacing=true}else{s.add(ch)}s.beginable=true}else if(/\\\\/.test(ch)){if(s.position<text.length+1){s.position++;ch=text.charAt(s.position);if(/ \\t/.test(ch)){s.spacing=true}else{s.add(ch);s.beginable=false}}}else if(!s.mono&&!s.bold&&(s.beginable||s.spacing)&&/\\*/.test(ch)){s.emitBlock();s.bold=true;s.modStack.unshift(\"bold\")}else if(!s.mono&&!s.ital&&(s.beginable||s.spacing)&&/\\_/.test(ch)){s.emitBlock();s.ital=true;s.modStack.unshift(\"ital\")}else if(!s.mono&&(s.beginable||s.spacing)&&/`/.test(ch)){s.emitBlock();s.mono=true;s.modStack.unshift(\"mono\")}else if(!s.mono&&s.mod()===\"bold\"&&/\\*/.test(ch)){if(s.position===text.length-1||/[.,_` \\t\\n]/.test(text.charAt(s.position+1))){s.emitBlock();s.bold=false;s.modStack.shift()}else{s.add(ch)}}else if(!s.mono&&s.mod()===\"ital\"&&/\\_/.test(ch)){if(s.position===text.length-1||/[.,*` \\t\\n]/.test(text.charAt(s.position+1))){s.emitBlock();s.ital=false;s.modStack.shift()}else{s.add(ch)}}else if(s.mono&&s.mod()===\"mono\"&&/`/.test(ch)){if(s.position===text.length-1||/[.,*_ \\t\\n]/.test(text.charAt(s.position+1))){s.emitBlock();s.mono=false;s.modStack.shift()}else{s.add(ch)}}else{s.add(ch);s.beginable=false}s.position++}s.emitBlock();return blocks}},{key:\"splitBlocks\",value:function splitBlocks(text,markupSystem){var system=this.decodeMarkupSystem(markupSystem);if(system===\"none\"){return[{text:text,mod:\"normal\"}]}else if(system===\"markdown\"){return this.splitMarkdownBlocks(text)}else if(system===\"html\"){return this.splitHtmlBlocks(text)}}},{key:\"overMaxWidth\",value:function overMaxWidth(text){var width=this.ctx.measureText(text).width;return this.lines.curWidth()+width>this.parent.fontOptions.maxWdt}},{key:\"getLongestFit\",value:function getLongestFit(words){var text=\"\";var w=0;while(w<words.length){var pre=text===\"\"?\"\":\" \";var newText=text+pre+words[w];if(this.overMaxWidth(newText))break;text=newText;w++}return w}},{key:\"getLongestFitWord\",value:function getLongestFitWord(words){var w=0;while(w<words.length){if(this.overMaxWidth(words.slice(0,w)))break;w++}return w}},{key:\"splitStringIntoLines\",value:function splitStringIntoLines(str){var mod=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"normal\";var appendLast=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;str=str.replace(/^( +)/g,\"$1\\r\");str=str.replace(/([^\\r][^ ]*)( +)/g,\"$1\\r$2\\r\");var words=str.split(\"\\r\");while(words.length>0){var w=this.getLongestFit(words);if(w===0){var word=words[0];var x=this.getLongestFitWord(word);this.lines.newLine(word.slice(0,x),mod);words[0]=word.slice(x)}else{var newW=w;if(words[w-1]===\" \"){w--}else if(words[newW]===\" \"){newW++}var text=words.slice(0,w).join(\"\");if(w==words.length&&appendLast){this.lines.append(text,mod)}else{this.lines.newLine(text,mod)}words=words.slice(newW)}}}}]);return LabelSplitter}();exports[\"default\"]=LabelSplitter},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _assign=__webpack_require__(90);var _assign2=_interopRequireDefault(_assign);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var LabelAccumulator=function(){function LabelAccumulator(measureText){(0,_classCallCheck3[\"default\"])(this,LabelAccumulator);this.measureText=measureText;this.current=0;this.width=0;this.height=0;this.lines=[]}(0,_createClass3[\"default\"])(LabelAccumulator,[{key:\"_add\",value:function _add(l,text){var mod=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"normal\";if(this.lines[l]===undefined){this.lines[l]={width:0,height:0,blocks:[]}}var tmpText=text;if(text===undefined||text===\"\")tmpText=\" \";var result=this.measureText(tmpText,mod);var block=(0,_assign2[\"default\"])({},result.values);block.text=text;block.width=result.width;block.mod=mod;if(text===undefined||text===\"\"){block.width=0}this.lines[l].blocks.push(block);this.lines[l].width+=block.width}},{key:\"curWidth\",value:function curWidth(){var line=this.lines[this.current];if(line===undefined)return 0;return line.width}},{key:\"append\",value:function append(text){var mod=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"normal\";this._add(this.current,text,mod)}},{key:\"newLine\",value:function newLine(text){var mod=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"normal\";this._add(this.current,text,mod);this.current++}},{key:\"determineLineHeights\",value:function determineLineHeights(){for(var k=0;k<this.lines.length;k++){var line=this.lines[k];var height=0;if(line.blocks!==undefined){for(var l=0;l<line.blocks.length;l++){var block=line.blocks[l];if(height<block.height){height=block.height}}}line.height=height}}},{key:\"determineLabelSize\",value:function determineLabelSize(){var width=0;var height=0;for(var k=0;k<this.lines.length;k++){var line=this.lines[k];if(line.width>width){width=line.width}height+=line.height}this.width=width;this.height=height}},{key:\"removeEmptyBlocks\",value:function removeEmptyBlocks(){var tmpLines=[];for(var k=0;k<this.lines.length;k++){var line=this.lines[k];if(line.blocks.length===0)continue;if(k===this.lines.length-1){if(line.width===0)continue}var tmpLine={};(0,_assign2[\"default\"])(tmpLine,line);tmpLine.blocks=[];var firstEmptyBlock=void 0;var tmpBlocks=[];for(var l=0;l<line.blocks.length;l++){var block=line.blocks[l];if(block.width!==0){tmpBlocks.push(block)}else{if(firstEmptyBlock===undefined){firstEmptyBlock=block}}}if(tmpBlocks.length===0&&firstEmptyBlock!==undefined){tmpBlocks.push(firstEmptyBlock)}tmpLine.blocks=tmpBlocks;tmpLines.push(tmpLine)}return tmpLines}},{key:\"finalize\",value:function finalize(){this.determineLineHeights();this.determineLabelSize();var tmpLines=this.removeEmptyBlocks();return{width:this.width,height:this.height,lines:tmpLines}}}]);return LabelAccumulator}();exports[\"default\"]=LabelAccumulator},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Box=function(_NodeBase){(0,_inherits3[\"default\"])(Box,_NodeBase);function Box(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Box);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Box.__proto__||(0,_getPrototypeOf2[\"default\"])(Box)).call(this,options,body,labelModule));_this._setMargins(labelModule);return _this}(0,_createClass3[\"default\"])(Box,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;if(this.needsRefresh(selected,hover)){var dimensions=this.getDimensionsFromLabel(ctx,selected,hover);this.width=dimensions.width+this.margin.right+this.margin.left;this.height=dimensions.height+this.margin.top+this.margin.bottom;this.radius=this.width/2}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.left=x-this.width/2;this.top=y-this.height/2;this.initContextForDraw(ctx,values);ctx.roundRect(this.left,this.top,this.width,this.height,values.borderRadius);this.performFill(ctx,values);this.updateBoundingBox(x,y,ctx,selected,hover);this.labelModule.draw(ctx,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,selected,hover)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y,ctx,selected,hover){this._updateBoundingBox(x,y,ctx,selected,hover)\n;var borderRadius=this.options.shapeProperties.borderRadius;this._addBoundingBoxMargin(borderRadius)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){this.resize(ctx);var borderWidth=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(angle)),Math.abs(this.height/2/Math.sin(angle)))+borderWidth}}]);return Box}(_NodeBase3[\"default\"]);exports[\"default\"]=Box},function(module,exports,__webpack_require__){__webpack_require__(195);module.exports=__webpack_require__(7).Object.getPrototypeOf},function(module,exports,__webpack_require__){var toObject=__webpack_require__(41);var $getPrototypeOf=__webpack_require__(85);__webpack_require__(87)(\"getPrototypeOf\",function(){return function getPrototypeOf(it){return $getPrototypeOf(toObject(it))}})},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(197),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(198);module.exports=__webpack_require__(7).Object.setPrototypeOf},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);$export($export.S,\"Object\",{setPrototypeOf:__webpack_require__(199).set})},function(module,exports,__webpack_require__){var isObject=__webpack_require__(32);var anObject=__webpack_require__(27);var check=function(O,proto){anObject(O);if(!isObject(proto)&&proto!==null)throw TypeError(proto+\": can't set as prototype!\")};module.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(test,buggy,set){try{set=__webpack_require__(80)(Function.call,__webpack_require__(89).f(Object.prototype,\"__proto__\").set,2);set(test,[]);buggy=!(test instanceof Array)}catch(e){buggy=true}return function setPrototypeOf(O,proto){check(O,proto);if(buggy)O.__proto__=proto;else set(O,proto);return O}}({},false):undefined),check:check}},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _CircleImageBase2=__webpack_require__(73);var _CircleImageBase3=_interopRequireDefault(_CircleImageBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Circle=function(_CircleImageBase){(0,_inherits3[\"default\"])(Circle,_CircleImageBase);function Circle(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Circle);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Circle.__proto__||(0,_getPrototypeOf2[\"default\"])(Circle)).call(this,options,body,labelModule));_this._setMargins(labelModule);return _this}(0,_createClass3[\"default\"])(Circle,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;if(this.needsRefresh(selected,hover)){var dimensions=this.getDimensionsFromLabel(ctx,selected,hover);var diameter=Math.max(dimensions.width+this.margin.right+this.margin.left,dimensions.height+this.margin.top+this.margin.bottom);this.options.size=diameter/2;this.width=diameter;this.height=diameter;this.radius=this.width/2}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.left=x-this.width/2;this.top=y-this.height/2;this._drawRawCircle(ctx,x,y,values);this.updateBoundingBox(x,y);this.labelModule.draw(ctx,this.left+this.textSize.width/2+this.margin.left,y,selected,hover)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y){this.boundingBox.top=y-this.options.size;this.boundingBox.left=x-this.options.size;this.boundingBox.right=x+this.options.size;this.boundingBox.bottom=y+this.options.size}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){this.resize(ctx);return this.width*.5}}]);return Circle}(_CircleImageBase3[\"default\"]);exports[\"default\"]=Circle},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _CircleImageBase2=__webpack_require__(73);var _CircleImageBase3=_interopRequireDefault(_CircleImageBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CircularImage=function(_CircleImageBase){(0,_inherits3[\"default\"])(CircularImage,_CircleImageBase);function CircularImage(options,body,labelModule,imageObj,imageObjAlt){(0,_classCallCheck3[\"default\"])(this,CircularImage);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(CircularImage.__proto__||(0,_getPrototypeOf2[\"default\"])(CircularImage)).call(this,options,body,labelModule));_this.setImages(imageObj,imageObjAlt);return _this}(0,_createClass3[\"default\"])(CircularImage,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;var imageAbsent=this.imageObj.src===undefined||this.imageObj.width===undefined||this.imageObj.height===undefined;if(imageAbsent){var diameter=this.options.size*2;this.width=diameter;this.height=diameter;this.radius=.5*this.width;return}if(this.needsRefresh(selected,hover)){this._resizeImage()}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.switchImages(selected);this.resize();this.left=x-this.width/2;this.top=y-this.height/2;this._drawRawCircle(ctx,x,y,values);ctx.save();ctx.clip();this._drawImageAtPosition(ctx,values);ctx.restore();this._drawImageLabel(ctx,x,y,selected,hover);this.updateBoundingBox(x,y)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y){this.boundingBox.top=y-this.options.size;this.boundingBox.left=x-this.options.size;this.boundingBox.right=x+this.options.size;this.boundingBox.bottom=y+this.options.size;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left);this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width);this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){this.resize(ctx);return this.width*.5}}]);return CircularImage}(_CircleImageBase3[\"default\"]);exports[\"default\"]=CircularImage},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Database=function(_NodeBase){(0,_inherits3[\"default\"])(Database,_NodeBase);function Database(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Database);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Database.__proto__||(0,_getPrototypeOf2[\"default\"])(Database)).call(this,options,body,labelModule));_this._setMargins(labelModule);return _this}(0,_createClass3[\"default\"])(Database,[{key:\"resize\",value:function resize(ctx,selected,hover){if(this.needsRefresh(selected,hover)){var dimensions=this.getDimensionsFromLabel(ctx,selected,hover);var size=dimensions.width+this.margin.right+this.margin.left;this.width=size;this.height=size;this.radius=this.width/2}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.left=x-this.width/2;this.top=y-this.height/2;this.initContextForDraw(ctx,values);ctx.database(x-this.width/2,y-this.height/2,this.width,this.height);this.performFill(ctx,values);this.updateBoundingBox(x,y,ctx,selected,hover);this.labelModule.draw(ctx,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,selected,hover)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Database}(_NodeBase3[\"default\"]);exports[\"default\"]=Database},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Diamond=function(_ShapeBase){(0,_inherits3[\"default\"])(Diamond,_ShapeBase);function Diamond(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Diamond);return(0,_possibleConstructorReturn3[\"default\"])(this,(Diamond.__proto__||(0,_getPrototypeOf2[\"default\"])(Diamond)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Diamond,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"diamond\",4,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Diamond}(_ShapeBase3[\"default\"]);exports[\"default\"]=Diamond},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Dot=function(_ShapeBase){(0,_inherits3[\"default\"])(Dot,_ShapeBase);function Dot(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Dot);return(0,_possibleConstructorReturn3[\"default\"])(this,(Dot.__proto__||(0,_getPrototypeOf2[\"default\"])(Dot)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Dot,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"circle\",2,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){this.resize(ctx);return this.options.size}}]);return Dot}(_ShapeBase3[\"default\"]);exports[\"default\"]=Dot},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Ellipse=function(_NodeBase){(0,_inherits3[\"default\"])(Ellipse,_NodeBase);function Ellipse(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Ellipse);return(0,_possibleConstructorReturn3[\"default\"])(this,(Ellipse.__proto__||(0,_getPrototypeOf2[\"default\"])(Ellipse)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Ellipse,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;if(this.needsRefresh(selected,hover)){var dimensions=this.getDimensionsFromLabel(ctx,selected,hover);this.height=dimensions.height*2;this.width=dimensions.width+dimensions.height;this.radius=.5*this.width}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.left=x-this.width*.5;this.top=y-this.height*.5;this.initContextForDraw(ctx,values);ctx.ellipse_vis(this.left,this.top,this.width,this.height);this.performFill(ctx,values);this.updateBoundingBox(x,y,ctx,selected,hover);this.labelModule.draw(ctx,x,y,selected,hover)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){this.resize(ctx);var a=this.width*.5;var b=this.height*.5;var w=Math.sin(angle)*a;var h=Math.cos(angle)*b;return a*b/Math.sqrt(w*w+h*h)}}]);return Ellipse}(_NodeBase3[\"default\"]);exports[\"default\"]=Ellipse},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Icon=function(_NodeBase){(0,_inherits3[\"default\"])(Icon,_NodeBase);function Icon(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Icon);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Icon.__proto__||(0,_getPrototypeOf2[\"default\"])(Icon)).call(this,options,body,labelModule));_this._setMargins(labelModule);return _this}(0,_createClass3[\"default\"])(Icon,[{key:\"resize\",value:function resize(ctx,selected,hover){if(this.needsRefresh(selected,hover)){this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)};this.width=this.iconSize.width+this.margin.right+this.margin.left;this.height=this.iconSize.height+this.margin.top+this.margin.bottom;this.radius=.5*this.width}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.options.icon.size=this.options.icon.size||50;this.left=x-this.width/2;this.top=y-this.height/2;this._icon(ctx,x,y,selected,hover,values);if(this.options.label!==undefined){var iconTextSpacing=5;this.labelModule.draw(ctx,this.left+this.iconSize.width/2+this.margin.left,y+this.height/2+iconTextSpacing,selected)}this.updateBoundingBox(x,y)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y){this.boundingBox.top=y-this.options.icon.size*.5;this.boundingBox.left=x-this.options.icon.size*.5;this.boundingBox.right=x+this.options.icon.size*.5;this.boundingBox.bottom=y+this.options.icon.size*.5;if(this.options.label!==undefined&&this.labelModule.size.width>0){var iconTextSpacing=5;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left);this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width);this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+iconTextSpacing)}}},{key:\"_icon\",value:function _icon(ctx,x,y,selected,hover,values){var iconSize=Number(this.options.icon.size);if(this.options.icon.code!==undefined){ctx.font=(selected?\"bold \":\"\")+iconSize+\"px \"+this.options.icon.face;ctx.fillStyle=this.options.icon.color||\"black\";ctx.textAlign=\"center\";ctx.textBaseline=\"middle\";this.enableShadow(ctx,values);ctx.fillText(this.options.icon.code,x,y);this.disableShadow(ctx,values)}else{console.error(\"When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.\")}}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Icon}(_NodeBase3[\"default\"]);exports[\"default\"]=Icon},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _CircleImageBase2=__webpack_require__(73);var _CircleImageBase3=_interopRequireDefault(_CircleImageBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Image=function(_CircleImageBase){(0,_inherits3[\"default\"])(Image,_CircleImageBase);function Image(options,body,labelModule,imageObj,imageObjAlt){(0,_classCallCheck3[\"default\"])(this,Image);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Image.__proto__||(0,_getPrototypeOf2[\"default\"])(Image)).call(this,options,body,labelModule));_this.setImages(imageObj,imageObjAlt);return _this}(0,_createClass3[\"default\"])(Image,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;var imageAbsent=this.imageObj.src===undefined||this.imageObj.width===undefined||this.imageObj.height===undefined;if(imageAbsent){var side=this.options.size*2;this.width=side;this.height=side;return}if(this.needsRefresh(selected,hover)){this._resizeImage()}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.switchImages(selected);this.resize();this.left=x-this.width/2;this.top=y-this.height/2;if(this.options.shapeProperties.useBorderWithImage===true){var neutralborderWidth=this.options.borderWidth;var selectionLineWidth=this.options.borderWidthSelected||2*this.options.borderWidth;var borderWidth=(selected?selectionLineWidth:neutralborderWidth)/this.body.view.scale;ctx.lineWidth=Math.min(this.width,borderWidth);ctx.beginPath();ctx.strokeStyle=selected?this.options.color.highlight.border:hover?this.options.color.hover.border:this.options.color.border;ctx.fillStyle=selected?this.options.color.highlight.background:hover?this.options.color.hover.background:this.options.color.background;ctx.rect(this.left-.5*ctx.lineWidth,this.top-.5*ctx.lineWidth,this.width+ctx.lineWidth,this.height+ctx.lineWidth);ctx.fill();this.performStroke(ctx,values);ctx.closePath()}this._drawImageAtPosition(ctx,values);this._drawImageLabel(ctx,x,y,selected,hover);this.updateBoundingBox(x,y)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y){this.resize();this._updateBoundingBox(x,y);if(this.options.label!==undefined&&this.labelModule.size.width>0){this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left);this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width);this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Image}(_CircleImageBase3[\"default\"]);exports[\"default\"]=Image},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Square=function(_ShapeBase){(0,_inherits3[\"default\"])(Square,_ShapeBase);function Square(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Square);return(0,_possibleConstructorReturn3[\"default\"])(this,(Square.__proto__||(0,_getPrototypeOf2[\"default\"])(Square)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Square,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"square\",2,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Square}(_ShapeBase3[\"default\"]);exports[\"default\"]=Square},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hexagon=function(_ShapeBase){(0,_inherits3[\"default\"])(Hexagon,_ShapeBase);function Hexagon(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Hexagon);return(0,_possibleConstructorReturn3[\"default\"])(this,(Hexagon.__proto__||(0,_getPrototypeOf2[\"default\"])(Hexagon)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Hexagon,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"hexagon\",4,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Hexagon}(_ShapeBase3[\"default\"]);exports[\"default\"]=Hexagon},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Star=function(_ShapeBase){(0,_inherits3[\"default\"])(Star,_ShapeBase);function Star(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Star);return(0,_possibleConstructorReturn3[\"default\"])(this,(Star.__proto__||(0,_getPrototypeOf2[\"default\"])(Star)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Star,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"star\",4,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Star}(_ShapeBase3[\"default\"]);exports[\"default\"]=Star},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Text=function(_NodeBase){(0,_inherits3[\"default\"])(Text,_NodeBase);function Text(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Text);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Text.__proto__||(0,_getPrototypeOf2[\"default\"])(Text)).call(this,options,body,labelModule));_this._setMargins(labelModule);return _this}(0,_createClass3[\"default\"])(Text,[{key:\"resize\",value:function resize(ctx,selected,hover){if(this.needsRefresh(selected,hover)){this.textSize=this.labelModule.getTextSize(ctx,selected,hover);this.width=this.textSize.width+this.margin.right+this.margin.left;this.height=this.textSize.height+this.margin.top+this.margin.bottom;this.radius=.5*this.width}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.left=x-this.width/2;this.top=y-this.height/2;this.enableShadow(ctx,values);this.labelModule.draw(ctx,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,selected,hover);this.disableShadow(ctx,values);this.updateBoundingBox(x,y,ctx,selected,hover)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Text}(_NodeBase3[\"default\"]);exports[\"default\"]=Text},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Triangle=function(_ShapeBase){(0,_inherits3[\"default\"])(Triangle,_ShapeBase);function Triangle(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Triangle);return(0,_possibleConstructorReturn3[\"default\"])(this,(Triangle.__proto__||(0,_getPrototypeOf2[\"default\"])(Triangle)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Triangle,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"triangle\",3,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Triangle}(_ShapeBase3[\"default\"]);exports[\"default\"]=Triangle},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var TriangleDown=function(_ShapeBase){(0,_inherits3[\"default\"])(TriangleDown,_ShapeBase);function TriangleDown(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,TriangleDown);return(0,_possibleConstructorReturn3[\"default\"])(this,(TriangleDown.__proto__||(0,_getPrototypeOf2[\"default\"])(TriangleDown)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(TriangleDown,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"triangleDown\",3,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return TriangleDown}(_ShapeBase3[\"default\"]);exports[\"default\"]=TriangleDown},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Edge=__webpack_require__(74)[\"default\"];var EdgesHandler=function(){function EdgesHandler(body,images,groups){var _this=this;(0,_classCallCheck3[\"default\"])(this,EdgesHandler);this.body=body;this.images=images;this.groups=groups;this.body.functions.createEdge=this.create.bind(this);this.edgesListeners={add:function add(event,params){_this.add(params.items)},update:function update(event,params){_this.update(params.items)},remove:function remove(event,params){_this.remove(params.items)}};this.options={};this.defaultOptions={arrows:{to:{enabled:false,\nscaleFactor:1,type:\"arrow\"},middle:{enabled:false,scaleFactor:1,type:\"arrow\"},from:{enabled:false,scaleFactor:1,type:\"arrow\"}},arrowStrikethrough:true,color:{color:\"#848484\",highlight:\"#848484\",hover:\"#848484\",inherit:\"from\",opacity:1},dashes:false,font:{color:\"#343434\",size:14,face:\"arial\",background:\"none\",strokeWidth:2,strokeColor:\"#ffffff\",align:\"horizontal\",multi:false,vadjust:0,bold:{mod:\"bold\"},boldital:{mod:\"bold italic\"},ital:{mod:\"italic\"},mono:{mod:\"\",size:15,face:\"courier new\",vadjust:2}},hidden:false,hoverWidth:1.5,label:undefined,labelHighlightBold:true,length:undefined,physics:true,scaling:{min:1,max:15,label:{enabled:true,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function customScalingFunction(min,max,total,value){if(max===min){return.5}else{var scale=1/(max-min);return Math.max(0,(value-min)*scale)}}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:false,color:\"rgba(0,0,0,0.5)\",size:10,x:5,y:5},smooth:{enabled:true,type:\"dynamic\",forceDirection:\"none\",roundness:.5},title:undefined,width:1,value:undefined};util.deepExtend(this.options,this.defaultOptions);this.bindEventListeners()}(0,_createClass3[\"default\"])(EdgesHandler,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this2=this;this.body.emitter.on(\"_forceDisableDynamicCurves\",function(type){var emit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(type===\"dynamic\"){type=\"continuous\"}var dataChanged=false;for(var edgeId in _this2.body.edges){if(_this2.body.edges.hasOwnProperty(edgeId)){var edge=_this2.body.edges[edgeId];var edgeData=_this2.body.data.edges._data[edgeId];if(edgeData!==undefined){var smoothOptions=edgeData.smooth;if(smoothOptions!==undefined){if(smoothOptions.enabled===true&&smoothOptions.type===\"dynamic\"){if(type===undefined){edge.setOptions({smooth:false})}else{edge.setOptions({smooth:{type:type}})}dataChanged=true}}}}}if(emit===true&&dataChanged===true){_this2.body.emitter.emit(\"_dataChanged\")}});this.body.emitter.on(\"_dataUpdated\",function(){_this2.reconnectEdges()});this.body.emitter.on(\"refreshEdges\",this.refresh.bind(this));this.body.emitter.on(\"refresh\",this.refresh.bind(this));this.body.emitter.on(\"destroy\",function(){util.forEach(_this2.edgesListeners,function(callback,event){if(_this2.body.data.edges)_this2.body.data.edges.off(event,callback)});delete _this2.body.functions.createEdge;delete _this2.edgesListeners.add;delete _this2.edgesListeners.update;delete _this2.edgesListeners.remove;delete _this2.edgesListeners})}},{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){Edge.parseOptions(this.options,options,true,this.defaultOptions,true);var dataChanged=false;if(options.smooth!==undefined){for(var edgeId in this.body.edges){if(this.body.edges.hasOwnProperty(edgeId)){dataChanged=this.body.edges[edgeId].updateEdgeType()||dataChanged}}}if(options.font!==undefined){for(var _edgeId in this.body.edges){if(this.body.edges.hasOwnProperty(_edgeId)){this.body.edges[_edgeId].updateLabelModule()}}}if(options.hidden!==undefined||options.physics!==undefined||dataChanged===true){this.body.emitter.emit(\"_dataChanged\")}}}},{key:\"setData\",value:function setData(edges){var _this3=this;var doNotEmit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var oldEdgesData=this.body.data.edges;if(edges instanceof DataSet||edges instanceof DataView){this.body.data.edges=edges}else if(Array.isArray(edges)){this.body.data.edges=new DataSet;this.body.data.edges.add(edges)}else if(!edges){this.body.data.edges=new DataSet}else{throw new TypeError(\"Array or DataSet expected\")}if(oldEdgesData){util.forEach(this.edgesListeners,function(callback,event){oldEdgesData.off(event,callback)})}this.body.edges={};if(this.body.data.edges){util.forEach(this.edgesListeners,function(callback,event){_this3.body.data.edges.on(event,callback)});var ids=this.body.data.edges.getIds();this.add(ids,true)}this.body.emitter.emit(\"_adjustEdgesForHierarchicalLayout\");if(doNotEmit===false){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"add\",value:function add(ids){var doNotEmit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var edges=this.body.edges;var edgesData=this.body.data.edges;for(var i=0;i<ids.length;i++){var id=ids[i];var oldEdge=edges[id];if(oldEdge){oldEdge.disconnect()}var data=edgesData.get(id,{showInternalIds:true});edges[id]=this.create(data)}this.body.emitter.emit(\"_adjustEdgesForHierarchicalLayout\");if(doNotEmit===false){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"update\",value:function update(ids){var edges=this.body.edges;var edgesData=this.body.data.edges;var dataChanged=false;for(var i=0;i<ids.length;i++){var id=ids[i];var data=edgesData.get(id);var edge=edges[id];if(edge!==undefined){edge.disconnect();dataChanged=edge.setOptions(data)||dataChanged;edge.connect()}else{this.body.edges[id]=this.create(data);dataChanged=true}}if(dataChanged===true){this.body.emitter.emit(\"_adjustEdgesForHierarchicalLayout\");this.body.emitter.emit(\"_dataChanged\")}else{this.body.emitter.emit(\"_dataUpdated\")}}},{key:\"remove\",value:function remove(ids){var emit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(ids.length===0)return;var edges=this.body.edges;util.forEach(ids,function(id){var edge=edges[id];if(edge!==undefined){edge.remove()}});if(emit){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"refresh\",value:function refresh(){var _this4=this;util.forEach(this.body.edges,function(edge,edgeId){var data=_this4.body.data.edges._data[edgeId];if(data!==undefined){edge.setOptions(data)}})}},{key:\"create\",value:function create(properties){return new Edge(properties,this.body,this.options,this.defaultOptions)}},{key:\"reconnectEdges\",value:function reconnectEdges(){var id;var nodes=this.body.nodes;var edges=this.body.edges;for(id in nodes){if(nodes.hasOwnProperty(id)){nodes[id].edges=[]}}for(id in edges){if(edges.hasOwnProperty(id)){var edge=edges[id];edge.from=null;edge.to=null;edge.connect()}}}},{key:\"getConnectedNodes\",value:function getConnectedNodes(edgeId){var nodeList=[];if(this.body.edges[edgeId]!==undefined){var edge=this.body.edges[edgeId];if(edge.fromId!==undefined){nodeList.push(edge.fromId)}if(edge.toId!==undefined){nodeList.push(edge.toId)}}return nodeList}},{key:\"_updateState\",value:function _updateState(){this._addMissingEdges();this._removeInvalidEdges()}},{key:\"_removeInvalidEdges\",value:function _removeInvalidEdges(){var _this5=this;var edgesToDelete=[];util.forEach(this.body.edges,function(edge,id){var toNode=_this5.body.nodes[edge.toId];var fromNode=_this5.body.nodes[edge.fromId];if(toNode!==undefined&&toNode.isCluster===true||fromNode!==undefined&&fromNode.isCluster===true){return}if(toNode===undefined||fromNode===undefined){edgesToDelete.push(id)}});this.remove(edgesToDelete,false)}},{key:\"_addMissingEdges\",value:function _addMissingEdges(){var edges=this.body.edges;var edgesData=this.body.data.edges;var addIds=[];edgesData.forEach(function(edgeData,edgeId){var edge=edges[edgeId];if(edge===undefined){addIds.push(edgeId)}});this.add(addIds,true)}}]);return EdgesHandler}();exports[\"default\"]=EdgesHandler},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _CubicBezierEdgeBase2=__webpack_require__(216);var _CubicBezierEdgeBase3=_interopRequireDefault(_CubicBezierEdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CubicBezierEdge=function(_CubicBezierEdgeBase){(0,_inherits3[\"default\"])(CubicBezierEdge,_CubicBezierEdgeBase);function CubicBezierEdge(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,CubicBezierEdge);return(0,_possibleConstructorReturn3[\"default\"])(this,(CubicBezierEdge.__proto__||(0,_getPrototypeOf2[\"default\"])(CubicBezierEdge)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(CubicBezierEdge,[{key:\"_line\",value:function _line(ctx,values,viaNodes){var via1=viaNodes[0];var via2=viaNodes[1];this._bezierCurve(ctx,values,via1,via2)}},{key:\"_getViaCoordinates\",value:function _getViaCoordinates(){var dx=this.from.x-this.to.x;var dy=this.from.y-this.to.y;var x1=void 0,y1=void 0,x2=void 0,y2=void 0;var roundness=this.options.smooth.roundness;if((Math.abs(dx)>Math.abs(dy)||this.options.smooth.forceDirection===true||this.options.smooth.forceDirection===\"horizontal\")&&this.options.smooth.forceDirection!==\"vertical\"){y1=this.from.y;y2=this.to.y;x1=this.from.x-roundness*dx;x2=this.to.x+roundness*dx}else{y1=this.from.y-roundness*dy;y2=this.to.y+roundness*dy;x1=this.from.x;x2=this.to.x}return[{x:x1,y:y1},{x:x2,y:y2}]}},{key:\"getViaNode\",value:function getViaNode(){return this._getViaCoordinates()}},{key:\"_findBorderPosition\",value:function _findBorderPosition(nearNode,ctx){return this._findBorderPositionBezier(nearNode,ctx)}},{key:\"_getDistanceToEdge\",value:function _getDistanceToEdge(x1,y1,x2,y2,x3,y3){var _ref=arguments.length>6&&arguments[6]!==undefined?arguments[6]:this._getViaCoordinates(),_ref2=(0,_slicedToArray3[\"default\"])(_ref,2),via1=_ref2[0],via2=_ref2[1];return this._getDistanceToBezierEdge(x1,y1,x2,y2,x3,y3,via1,via2)}},{key:\"getPoint\",value:function getPoint(percentage){var _ref3=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this._getViaCoordinates(),_ref4=(0,_slicedToArray3[\"default\"])(_ref3,2),via1=_ref4[0],via2=_ref4[1];var t=percentage;var vec=[];vec[0]=Math.pow(1-t,3);vec[1]=3*t*Math.pow(1-t,2);vec[2]=3*Math.pow(t,2)*(1-t);vec[3]=Math.pow(t,3);var x=vec[0]*this.fromPoint.x+vec[1]*via1.x+vec[2]*via2.x+vec[3]*this.toPoint.x;var y=vec[0]*this.fromPoint.y+vec[1]*via1.y+vec[2]*via2.y+vec[3]*this.toPoint.y;return{x:x,y:y}}}]);return CubicBezierEdge}(_CubicBezierEdgeBase3[\"default\"]);exports[\"default\"]=CubicBezierEdge},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _BezierEdgeBase2=__webpack_require__(75);var _BezierEdgeBase3=_interopRequireDefault(_BezierEdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CubicBezierEdgeBase=function(_BezierEdgeBase){(0,_inherits3[\"default\"])(CubicBezierEdgeBase,_BezierEdgeBase);function CubicBezierEdgeBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,CubicBezierEdgeBase);return(0,_possibleConstructorReturn3[\"default\"])(this,(CubicBezierEdgeBase.__proto__||(0,_getPrototypeOf2[\"default\"])(CubicBezierEdgeBase)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(CubicBezierEdgeBase,[{key:\"_getDistanceToBezierEdge\",value:function _getDistanceToBezierEdge(x1,y1,x2,y2,x3,y3,via1,via2){var minDistance=1e9;var distance=void 0;var i=void 0,t=void 0,x=void 0,y=void 0;var lastX=x1;var lastY=y1;var vec=[0,0,0,0];for(i=1;i<10;i++){t=.1*i;vec[0]=Math.pow(1-t,3);vec[1]=3*t*Math.pow(1-t,2);vec[2]=3*Math.pow(t,2)*(1-t);vec[3]=Math.pow(t,3);x=vec[0]*x1+vec[1]*via1.x+vec[2]*via2.x+vec[3]*x2;y=vec[0]*y1+vec[1]*via1.y+vec[2]*via2.y+vec[3]*y2;if(i>0){distance=this._getDistanceToLine(lastX,lastY,x,y,x3,y3);minDistance=distance<minDistance?distance:minDistance}lastX=x;lastY=y}return minDistance}}]);return CubicBezierEdgeBase}(_BezierEdgeBase3[\"default\"]);exports[\"default\"]=CubicBezierEdgeBase},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _BezierEdgeBase2=__webpack_require__(75);var _BezierEdgeBase3=_interopRequireDefault(_BezierEdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var BezierEdgeDynamic=function(_BezierEdgeBase){(0,_inherits3[\"default\"])(BezierEdgeDynamic,_BezierEdgeBase);function BezierEdgeDynamic(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,BezierEdgeDynamic);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(BezierEdgeDynamic.__proto__||(0,_getPrototypeOf2[\"default\"])(BezierEdgeDynamic)).call(this,options,body,labelModule));_this._boundFunction=function(){_this.positionBezierNode()};_this.body.emitter.on(\"_repositionBezierNodes\",_this._boundFunction);return _this}(0,_createClass3[\"default\"])(BezierEdgeDynamic,[{key:\"setOptions\",value:function setOptions(options){var physicsChange=false;if(this.options.physics!==options.physics){physicsChange=true}this.options=options;this.id=this.options.id;this.from=this.body.nodes[this.options.from];this.to=this.body.nodes[this.options.to];this.setupSupportNode();this.connect();if(physicsChange===true){this.via.setOptions({physics:this.options.physics});this.positionBezierNode()}}},{key:\"connect\",value:function connect(){this.from=this.body.nodes[this.options.from];this.to=this.body.nodes[this.options.to];if(this.from===undefined||this.to===undefined||this.options.physics===false){this.via.setOptions({physics:false})}else{if(this.from.id===this.to.id){this.via.setOptions({physics:false})}else{this.via.setOptions({physics:true})}}}},{key:\"cleanup\",value:function cleanup(){this.body.emitter.off(\"_repositionBezierNodes\",this._boundFunction);if(this.via!==undefined){delete this.body.nodes[this.via.id];this.via=undefined;return true}return false}},{key:\"setupSupportNode\",value:function setupSupportNode(){if(this.via===undefined){var nodeId=\"edgeId:\"+this.id;var node=this.body.functions.createNode({id:nodeId,shape:\"circle\",physics:true,hidden:true});this.body.nodes[nodeId]=node;this.via=node;this.via.parentEdgeId=this.id;this.positionBezierNode()}}},{key:\"positionBezierNode\",value:function positionBezierNode(){if(this.via!==undefined&&this.from!==undefined&&this.to!==undefined){this.via.x=.5*(this.from.x+this.to.x);this.via.y=.5*(this.from.y+this.to.y)}else if(this.via!==undefined){this.via.x=0;this.via.y=0}}},{key:\"_line\",value:function _line(ctx,values,viaNode){this._bezierCurve(ctx,values,viaNode)}},{key:\"getViaNode\",value:function getViaNode(){return this.via}},{key:\"getPoint\",value:function getPoint(percentage){var viaNode=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.via;var t=percentage;var x=void 0,y=void 0;if(this.from===this.to){var _getCircleData=this._getCircleData(this.from),_getCircleData2=(0,_slicedToArray3[\"default\"])(_getCircleData,3),cx=_getCircleData2[0],cy=_getCircleData2[1],cr=_getCircleData2[2];var a=2*Math.PI*(1-t);x=cx+cr*Math.sin(a);y=cy+cr-cr*(1-Math.cos(a))}else{x=Math.pow(1-t,2)*this.fromPoint.x+2*t*(1-t)*viaNode.x+Math.pow(t,2)*this.toPoint.x;y=Math.pow(1-t,2)*this.fromPoint.y+2*t*(1-t)*viaNode.y+Math.pow(t,2)*this.toPoint.y}return{x:x,y:y}}},{key:\"_findBorderPosition\",value:function _findBorderPosition(nearNode,ctx){return this._findBorderPositionBezier(nearNode,ctx,this.via)}},{key:\"_getDistanceToEdge\",value:function _getDistanceToEdge(x1,y1,x2,y2,x3,y3){return this._getDistanceToBezierEdge(x1,y1,x2,y2,x3,y3,this.via)}}]);return BezierEdgeDynamic}(_BezierEdgeBase3[\"default\"]);exports[\"default\"]=BezierEdgeDynamic},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _BezierEdgeBase2=__webpack_require__(75);var _BezierEdgeBase3=_interopRequireDefault(_BezierEdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var BezierEdgeStatic=function(_BezierEdgeBase){(0,_inherits3[\"default\"])(BezierEdgeStatic,_BezierEdgeBase);function BezierEdgeStatic(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,BezierEdgeStatic);return(0,_possibleConstructorReturn3[\"default\"])(this,(BezierEdgeStatic.__proto__||(0,_getPrototypeOf2[\"default\"])(BezierEdgeStatic)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(BezierEdgeStatic,[{key:\"_line\",value:function _line(ctx,values,viaNode){this._bezierCurve(ctx,values,viaNode)}},{key:\"getViaNode\",value:function getViaNode(){return this._getViaCoordinates()}},{key:\"_getViaCoordinates\",value:function _getViaCoordinates(){var xVia=undefined;var yVia=undefined;var factor=this.options.smooth.roundness;var type=this.options.smooth.type;var dx=Math.abs(this.from.x-this.to.x);var dy=Math.abs(this.from.y-this.to.y);if(type===\"discrete\"||type===\"diagonalCross\"){var stepX=void 0;var stepY=void 0;if(dx<=dy){stepX=stepY=factor*dy}else{stepX=stepY=factor*dx}if(this.from.x>this.to.x)stepX=-stepX;if(this.from.y>=this.to.y)stepY=-stepY;xVia=this.from.x+stepX;yVia=this.from.y+stepY;if(type===\"discrete\"){if(dx<=dy){xVia=dx<factor*dy?this.from.x:xVia}else{yVia=dy<factor*dx?this.from.y:yVia}}}else if(type===\"straightCross\"){var _stepX=(1-factor)*dx;var _stepY=(1-factor)*dy;if(dx<=dy){_stepX=0;if(this.from.y<this.to.y)_stepY=-_stepY}else{if(this.from.x<this.to.x)_stepX=-_stepX;_stepY=0}xVia=this.to.x+_stepX;yVia=this.to.y+_stepY}else if(type===\"horizontal\"){var _stepX2=(1-factor)*dx;if(this.from.x<this.to.x)_stepX2=-_stepX2;xVia=this.to.x+_stepX2;yVia=this.from.y}else if(type===\"vertical\"){var _stepY2=(1-factor)*dy;if(this.from.y<this.to.y)_stepY2=-_stepY2;xVia=this.from.x;yVia=this.to.y+_stepY2}else if(type===\"curvedCW\"){dx=this.to.x-this.from.x;dy=this.from.y-this.to.y;var radius=Math.sqrt(dx*dx+dy*dy);var pi=Math.PI;var originalAngle=Math.atan2(dy,dx);var myAngle=(originalAngle+(factor*.5+.5)*pi)%(2*pi);xVia=this.from.x+(factor*.5+.5)*radius*Math.sin(myAngle);yVia=this.from.y+(factor*.5+.5)*radius*Math.cos(myAngle)}else if(type===\"curvedCCW\"){dx=this.to.x-this.from.x;dy=this.from.y-this.to.y;var _radius=Math.sqrt(dx*dx+dy*dy);var _pi=Math.PI;var _originalAngle=Math.atan2(dy,dx);var _myAngle=(_originalAngle+(-factor*.5+.5)*_pi)%(2*_pi);xVia=this.from.x+(factor*.5+.5)*_radius*Math.sin(_myAngle);yVia=this.from.y+(factor*.5+.5)*_radius*Math.cos(_myAngle)}else{var _stepX3=void 0;var _stepY3=void 0;if(dx<=dy){_stepX3=_stepY3=factor*dy}else{_stepX3=_stepY3=factor*dx}if(this.from.x>this.to.x)_stepX3=-_stepX3;if(this.from.y>=this.to.y)_stepY3=-_stepY3;xVia=this.from.x+_stepX3;yVia=this.from.y+_stepY3;if(dx<=dy){if(this.from.x<=this.to.x){xVia=this.to.x<xVia?this.to.x:xVia}else{xVia=this.to.x>xVia?this.to.x:xVia}}else{if(this.from.y>=this.to.y){yVia=this.to.y>yVia?this.to.y:yVia}else{yVia=this.to.y<yVia?this.to.y:yVia}}}return{x:xVia,y:yVia}}},{key:\"_findBorderPosition\",value:function _findBorderPosition(nearNode,ctx){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return this._findBorderPositionBezier(nearNode,ctx,options.via)}},{key:\"_getDistanceToEdge\",value:function _getDistanceToEdge(x1,y1,x2,y2,x3,y3){var viaNode=arguments.length>6&&arguments[6]!==undefined?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(x1,y1,x2,y2,x3,y3,viaNode)}},{key:\"getPoint\",value:function getPoint(percentage){var viaNode=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this._getViaCoordinates();var t=percentage;var x=Math.pow(1-t,2)*this.fromPoint.x+2*t*(1-t)*viaNode.x+Math.pow(t,2)*this.toPoint.x;var y=Math.pow(1-t,2)*this.fromPoint.y+2*t*(1-t)*viaNode.y+Math.pow(t,2)*this.toPoint.y;return{x:x,y:y}}}]);return BezierEdgeStatic}(_BezierEdgeBase3[\"default\"]);exports[\"default\"]=BezierEdgeStatic},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _EdgeBase2=__webpack_require__(118);var _EdgeBase3=_interopRequireDefault(_EdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var StraightEdge=function(_EdgeBase){(0,_inherits3[\"default\"])(StraightEdge,_EdgeBase);function StraightEdge(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,StraightEdge);return(0,_possibleConstructorReturn3[\"default\"])(this,(StraightEdge.__proto__||(0,_getPrototypeOf2[\"default\"])(StraightEdge)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(StraightEdge,[{key:\"_line\",value:function _line(ctx,values){ctx.beginPath();ctx.moveTo(this.fromPoint.x,this.fromPoint.y);ctx.lineTo(this.toPoint.x,this.toPoint.y);this.enableShadow(ctx,values);ctx.stroke();this.disableShadow(ctx,values)}},{key:\"getViaNode\",value:function getViaNode(){return undefined}},{key:\"getPoint\",value:function getPoint(percentage){return{x:(1-percentage)*this.fromPoint.x+percentage*this.toPoint.x,y:(1-percentage)*this.fromPoint.y+percentage*this.toPoint.y}}},{key:\"_findBorderPosition\",value:function _findBorderPosition(nearNode,ctx){var node1=this.to;var node2=this.from;if(nearNode.id===this.from.id){node1=this.from;node2=this.to}var angle=Math.atan2(node1.y-node2.y,node1.x-node2.x);var dx=node1.x-node2.x;var dy=node1.y-node2.y;var edgeSegmentLength=Math.sqrt(dx*dx+dy*dy);var toBorderDist=nearNode.distanceToBorder(ctx,angle);var toBorderPoint=(edgeSegmentLength-toBorderDist)/edgeSegmentLength;var borderPos={};borderPos.x=(1-toBorderPoint)*node2.x+toBorderPoint*node1.x;borderPos.y=(1-toBorderPoint)*node2.y+toBorderPoint*node1.y;return borderPos}},{key:\"_getDistanceToEdge\",value:function _getDistanceToEdge(x1,y1,x2,y2,x3,y3){return this._getDistanceToLine(x1,y1,x2,y2,x3,y3)}}]);return StraightEdge}(_EdgeBase3[\"default\"]);exports[\"default\"]=StraightEdge},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var BarnesHutSolver=__webpack_require__(120)[\"default\"];var Repulsion=__webpack_require__(221)[\"default\"];var HierarchicalRepulsion=__webpack_require__(222)[\"default\"];var SpringSolver=__webpack_require__(223)[\"default\"];var HierarchicalSpringSolver=__webpack_require__(224)[\"default\"];var CentralGravitySolver=__webpack_require__(121)[\"default\"];var ForceAtlas2BasedRepulsionSolver=__webpack_require__(225)[\"default\"];var ForceAtlas2BasedCentralGravitySolver=__webpack_require__(226)[\"default\"];var util=__webpack_require__(2);var EndPoints=__webpack_require__(119)[\"default\"];var PhysicsEngine=function(){function PhysicsEngine(body){(0,_classCallCheck3[\"default\"])(this,PhysicsEngine);this.body=body;this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}};this.physicsEnabled=true;this.simulationInterval=1e3/60;this.requiresTimeout=true;this.previousStates={};this.referenceState={};this.freezeCache={};this.renderTimer=undefined;this.adaptiveTimestep=false;this.adaptiveTimestepEnabled=false;this.adaptiveCounter=0;this.adaptiveInterval=3;this.stabilized=false;this.startedStabilization=false;this.stabilizationIterations=0;this.ready=false;this.options={};this.defaultOptions={enabled:true,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:\"barnesHut\",stabilization:{enabled:true,iterations:1e3,updateInterval:50,onlyDynamicEdges:false,fit:true},timestep:.5,adaptiveTimestep:true};util.extend(this.options,this.defaultOptions);this.timestep=.5;this.layoutFailed=false;this.bindEventListeners()}(0,_createClass3[\"default\"])(PhysicsEngine,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this=this;this.body.emitter.on(\"initPhysics\",function(){_this.initPhysics()});this.body.emitter.on(\"_layoutFailed\",function(){_this.layoutFailed=true});this.body.emitter.on(\"resetPhysics\",function(){_this.stopSimulation();_this.ready=false});this.body.emitter.on(\"disablePhysics\",function(){_this.physicsEnabled=false;_this.stopSimulation()});this.body.emitter.on(\"restorePhysics\",function(){_this.setOptions(_this.options);if(_this.ready===true){_this.startSimulation()}});this.body.emitter.on(\"startSimulation\",function(){if(_this.ready===true){_this.startSimulation()}});this.body.emitter.on(\"stopSimulation\",function(){_this.stopSimulation()});this.body.emitter.on(\"destroy\",function(){_this.stopSimulation(false);_this.body.emitter.off()});this.body.emitter.on(\"_dataChanged\",function(){_this.updatePhysicsData()})}},{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){if(options===false){this.options.enabled=false;this.physicsEnabled=false;this.stopSimulation()}else if(options===true){this.options.enabled=true;this.physicsEnabled=true;this.startSimulation()}else{this.physicsEnabled=true;util.selectiveNotDeepExtend([\"stabilization\"],this.options,options);util.mergeOptions(this.options,options,\"stabilization\");if(options.enabled===undefined){this.options.enabled=true}if(this.options.enabled===false){this.physicsEnabled=false;this.stopSimulation()}this.timestep=this.options.timestep}}this.init()}},{key:\"init\",value:function init(){var options;if(this.options.solver===\"forceAtlas2Based\"){options=this.options.forceAtlas2Based;this.nodesSolver=new ForceAtlas2BasedRepulsionSolver(this.body,this.physicsBody,options);this.edgesSolver=new SpringSolver(this.body,this.physicsBody,options);this.gravitySolver=new ForceAtlas2BasedCentralGravitySolver(this.body,this.physicsBody,options)}else if(this.options.solver===\"repulsion\"){options=this.options.repulsion;this.nodesSolver=new Repulsion(this.body,this.physicsBody,options);this.edgesSolver=new SpringSolver(this.body,this.physicsBody,options);this.gravitySolver=new CentralGravitySolver(this.body,this.physicsBody,options)}else if(this.options.solver===\"hierarchicalRepulsion\"){options=this.options.hierarchicalRepulsion;this.nodesSolver=new HierarchicalRepulsion(this.body,this.physicsBody,options);this.edgesSolver=new HierarchicalSpringSolver(this.body,this.physicsBody,options);this.gravitySolver=new CentralGravitySolver(this.body,this.physicsBody,options)}else{options=this.options.barnesHut;this.nodesSolver=new BarnesHutSolver(this.body,this.physicsBody,options);this.edgesSolver=new SpringSolver(this.body,this.physicsBody,options);this.gravitySolver=new CentralGravitySolver(this.body,this.physicsBody,options)}this.modelOptions=options}},{key:\"initPhysics\",value:function initPhysics(){if(this.physicsEnabled===true&&this.options.enabled===true){if(this.options.stabilization.enabled===true){this.stabilize()}else{this.stabilized=false;this.ready=true;this.body.emitter.emit(\"fit\",{},this.layoutFailed);this.startSimulation()}}else{this.ready=true;this.body.emitter.emit(\"fit\")}}},{key:\"startSimulation\",value:function startSimulation(){if(this.physicsEnabled===true&&this.options.enabled===true){this.stabilized=false;this.adaptiveTimestep=false;this.body.emitter.emit(\"_resizeNodes\");if(this.viewFunction===undefined){this.viewFunction=this.simulationStep.bind(this);this.body.emitter.on(\"initRedraw\",this.viewFunction);this.body.emitter.emit(\"_startRendering\")}}else{this.body.emitter.emit(\"_redraw\")}}},{key:\"stopSimulation\",value:function stopSimulation(){var emit=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;this.stabilized=true;if(emit===true){this._emitStabilized()}if(this.viewFunction!==undefined){this.body.emitter.off(\"initRedraw\",this.viewFunction);this.viewFunction=undefined;if(emit===true){this.body.emitter.emit(\"_stopRendering\")}}}},{key:\"simulationStep\",value:function simulationStep(){var startTime=Date.now();this.physicsTick();var physicsTime=Date.now()-startTime;if((physicsTime<.4*this.simulationInterval||this.runDoubleSpeed===true)&&this.stabilized===false){this.physicsTick();this.runDoubleSpeed=true}if(this.stabilized===true){this.stopSimulation()}}},{key:\"_emitStabilized\",value:function _emitStabilized(){var _this2=this;var amountOfIterations=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.stabilizationIterations;if(this.stabilizationIterations>1||this.startedStabilization===true){setTimeout(function(){_this2.body.emitter.emit(\"stabilized\",{iterations:amountOfIterations});_this2.startedStabilization=false;_this2.stabilizationIterations=0},0)}}},{key:\"physicsStep\",value:function physicsStep(){this.gravitySolver.solve();this.nodesSolver.solve();this.edgesSolver.solve();this.moveNodes()}},{key:\"adjustTimeStep\",value:function adjustTimeStep(){var factor=1.2;if(this._evaluateStepQuality()===true){this.timestep=factor*this.timestep}else{if(this.timestep/factor<this.options.timestep){this.timestep=this.options.timestep}else{this.adaptiveCounter=-1;this.timestep=Math.max(this.options.timestep,this.timestep/factor)}}}},{key:\"physicsTick\",value:function physicsTick(){this._startStabilizing();if(this.stabilized===true)return;if(this.adaptiveTimestep===true&&this.adaptiveTimestepEnabled===true){var doAdaptive=this.adaptiveCounter%this.adaptiveInterval===0;if(doAdaptive){this.timestep=2*this.timestep;this.physicsStep();this.revert();this.timestep=.5*this.timestep;this.physicsStep();this.physicsStep();this.adjustTimeStep()}else{this.physicsStep()}this.adaptiveCounter+=1}else{this.timestep=this.options.timestep;this.physicsStep()}\nif(this.stabilized===true)this.revert();this.stabilizationIterations++}},{key:\"updatePhysicsData\",value:function updatePhysicsData(){this.physicsBody.forces={};this.physicsBody.physicsNodeIndices=[];this.physicsBody.physicsEdgeIndices=[];var nodes=this.body.nodes;var edges=this.body.edges;for(var nodeId in nodes){if(nodes.hasOwnProperty(nodeId)){if(nodes[nodeId].options.physics===true){this.physicsBody.physicsNodeIndices.push(nodes[nodeId].id)}}}for(var edgeId in edges){if(edges.hasOwnProperty(edgeId)){if(edges[edgeId].options.physics===true){this.physicsBody.physicsEdgeIndices.push(edges[edgeId].id)}}}for(var i=0;i<this.physicsBody.physicsNodeIndices.length;i++){var _nodeId=this.physicsBody.physicsNodeIndices[i];this.physicsBody.forces[_nodeId]={x:0,y:0};if(this.physicsBody.velocities[_nodeId]===undefined){this.physicsBody.velocities[_nodeId]={x:0,y:0}}}for(var _nodeId2 in this.physicsBody.velocities){if(nodes[_nodeId2]===undefined){delete this.physicsBody.velocities[_nodeId2]}}}},{key:\"revert\",value:function revert(){var nodeIds=(0,_keys2[\"default\"])(this.previousStates);var nodes=this.body.nodes;var velocities=this.physicsBody.velocities;this.referenceState={};for(var i=0;i<nodeIds.length;i++){var nodeId=nodeIds[i];if(nodes[nodeId]!==undefined){if(nodes[nodeId].options.physics===true){this.referenceState[nodeId]={positions:{x:nodes[nodeId].x,y:nodes[nodeId].y}};velocities[nodeId].x=this.previousStates[nodeId].vx;velocities[nodeId].y=this.previousStates[nodeId].vy;nodes[nodeId].x=this.previousStates[nodeId].x;nodes[nodeId].y=this.previousStates[nodeId].y}}else{delete this.previousStates[nodeId]}}}},{key:\"_evaluateStepQuality\",value:function _evaluateStepQuality(){var dx=void 0,dy=void 0,dpos=void 0;var nodes=this.body.nodes;var reference=this.referenceState;var posThreshold=.3;for(var nodeId in this.referenceState){if(this.referenceState.hasOwnProperty(nodeId)&&nodes[nodeId]!==undefined){dx=nodes[nodeId].x-reference[nodeId].positions.x;dy=nodes[nodeId].y-reference[nodeId].positions.y;dpos=Math.sqrt(Math.pow(dx,2)+Math.pow(dy,2));if(dpos>posThreshold){return false}}}return true}},{key:\"moveNodes\",value:function moveNodes(){var nodeIndices=this.physicsBody.physicsNodeIndices;var maxNodeVelocity=0;var averageNodeVelocity=0;var velocityAdaptiveThreshold=5;for(var i=0;i<nodeIndices.length;i++){var nodeId=nodeIndices[i];var nodeVelocity=this._performStep(nodeId);maxNodeVelocity=Math.max(maxNodeVelocity,nodeVelocity);averageNodeVelocity+=nodeVelocity}this.adaptiveTimestepEnabled=averageNodeVelocity/nodeIndices.length<velocityAdaptiveThreshold;this.stabilized=maxNodeVelocity<this.options.minVelocity}},{key:\"calculateComponentVelocity\",value:function calculateComponentVelocity(v,f,m){var df=this.modelOptions.damping*v;var a=(f-df)/m;v+=a*this.timestep;var maxV=this.options.maxVelocity||1e9;if(Math.abs(v)>maxV){v=v>0?maxV:-maxV}return v}},{key:\"_performStep\",value:function _performStep(nodeId){var node=this.body.nodes[nodeId];var force=this.physicsBody.forces[nodeId];var velocity=this.physicsBody.velocities[nodeId];this.previousStates[nodeId]={x:node.x,y:node.y,vx:velocity.x,vy:velocity.y};if(node.options.fixed.x===false){velocity.x=this.calculateComponentVelocity(velocity.x,force.x,node.options.mass);node.x+=velocity.x*this.timestep}else{force.x=0;velocity.x=0}if(node.options.fixed.y===false){velocity.y=this.calculateComponentVelocity(velocity.y,force.y,node.options.mass);node.y+=velocity.y*this.timestep}else{force.y=0;velocity.y=0}var totalVelocity=Math.sqrt(Math.pow(velocity.x,2)+Math.pow(velocity.y,2));return totalVelocity}},{key:\"_freezeNodes\",value:function _freezeNodes(){var nodes=this.body.nodes;for(var id in nodes){if(nodes.hasOwnProperty(id)){if(nodes[id].x&&nodes[id].y){var fixed=nodes[id].options.fixed;this.freezeCache[id]={x:fixed.x,y:fixed.y};fixed.x=true;fixed.y=true}}}}},{key:\"_restoreFrozenNodes\",value:function _restoreFrozenNodes(){var nodes=this.body.nodes;for(var id in nodes){if(nodes.hasOwnProperty(id)){if(this.freezeCache[id]!==undefined){nodes[id].options.fixed.x=this.freezeCache[id].x;nodes[id].options.fixed.y=this.freezeCache[id].y}}}this.freezeCache={}}},{key:\"stabilize\",value:function stabilize(){var _this3=this;var iterations=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.options.stabilization.iterations;if(typeof iterations!==\"number\"){iterations=this.options.stabilization.iterations;console.log(\"The stabilize method needs a numeric amount of iterations. Switching to default: \",iterations)}if(this.physicsBody.physicsNodeIndices.length===0){this.ready=true;return}this.adaptiveTimestep=true&&this.options.adaptiveTimestep;this.body.emitter.emit(\"_resizeNodes\");this.stopSimulation();this.stabilized=false;this.body.emitter.emit(\"_blockRedraw\");this.targetIterations=iterations;if(this.options.stabilization.onlyDynamicEdges===true){this._freezeNodes()}this.stabilizationIterations=0;setTimeout(function(){return _this3._stabilizationBatch()},0)}},{key:\"_startStabilizing\",value:function _startStabilizing(){if(this.startedStabilization===true)return false;this.body.emitter.emit(\"startStabilizing\");this.startedStabilization=true;return true}},{key:\"_stabilizationBatch\",value:function _stabilizationBatch(){var _this4=this;var running=function running(){return _this4.stabilized===false&&_this4.stabilizationIterations<_this4.targetIterations};var sendProgress=function sendProgress(){_this4.body.emitter.emit(\"stabilizationProgress\",{iterations:_this4.stabilizationIterations,total:_this4.targetIterations})};if(this._startStabilizing()){sendProgress()}var count=0;while(running()&&count<this.options.stabilization.updateInterval){this.physicsTick();count++}sendProgress();if(running()){setTimeout(this._stabilizationBatch.bind(this),0)}else{this._finalizeStabilization()}}},{key:\"_finalizeStabilization\",value:function _finalizeStabilization(){this.body.emitter.emit(\"_allowRedraw\");if(this.options.stabilization.fit===true){this.body.emitter.emit(\"fit\")}if(this.options.stabilization.onlyDynamicEdges===true){this._restoreFrozenNodes()}this.body.emitter.emit(\"stabilizationIterationsDone\");this.body.emitter.emit(\"_requestRedraw\");if(this.stabilized===true){this._emitStabilized()}else{this.startSimulation()}this.ready=true}},{key:\"_drawForces\",value:function _drawForces(ctx){for(var i=0;i<this.physicsBody.physicsNodeIndices.length;i++){var index=this.physicsBody.physicsNodeIndices[i];var node=this.body.nodes[index];var force=this.physicsBody.forces[index];var factor=20;var colorFactor=.03;var forceSize=Math.sqrt(Math.pow(force.x,2)+Math.pow(force.x,2));var size=Math.min(Math.max(5,forceSize),15);var arrowSize=3*size;var color=util.HSVToHex((180-Math.min(1,Math.max(0,colorFactor*forceSize))*180)/360,1,1);var point={x:node.x+factor*force.x,y:node.y+factor*force.y};ctx.lineWidth=size;ctx.strokeStyle=color;ctx.beginPath();ctx.moveTo(node.x,node.y);ctx.lineTo(point.x,point.y);ctx.stroke();var angle=Math.atan2(force.y,force.x);ctx.fillStyle=color;EndPoints.draw(ctx,{type:\"arrow\",point:point,angle:angle,length:arrowSize});ctx.fill()}}}]);return PhysicsEngine}();exports[\"default\"]=PhysicsEngine},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var RepulsionSolver=function(){function RepulsionSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,RepulsionSolver);this.body=body;this.physicsBody=physicsBody;this.setOptions(options)}(0,_createClass3[\"default\"])(RepulsionSolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"solve\",value:function solve(){var dx,dy,distance,fx,fy,repulsingForce,node1,node2;var nodes=this.body.nodes;var nodeIndices=this.physicsBody.physicsNodeIndices;var forces=this.physicsBody.forces;var nodeDistance=this.options.nodeDistance;var a=-2/3/nodeDistance;var b=4/3;for(var i=0;i<nodeIndices.length-1;i++){node1=nodes[nodeIndices[i]];for(var j=i+1;j<nodeIndices.length;j++){node2=nodes[nodeIndices[j]];dx=node2.x-node1.x;dy=node2.y-node1.y;distance=Math.sqrt(dx*dx+dy*dy);if(distance===0){distance=.1*Math.random();dx=distance}if(distance<2*nodeDistance){if(distance<.5*nodeDistance){repulsingForce=1}else{repulsingForce=a*distance+b}repulsingForce=repulsingForce/distance;fx=dx*repulsingForce;fy=dy*repulsingForce;forces[node1.id].x-=fx;forces[node1.id].y-=fy;forces[node2.id].x+=fx;forces[node2.id].y+=fy}}}}}]);return RepulsionSolver}();exports[\"default\"]=RepulsionSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var HierarchicalRepulsionSolver=function(){function HierarchicalRepulsionSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,HierarchicalRepulsionSolver);this.body=body;this.physicsBody=physicsBody;this.setOptions(options)}(0,_createClass3[\"default\"])(HierarchicalRepulsionSolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"solve\",value:function solve(){var dx,dy,distance,fx,fy,repulsingForce,node1,node2,i,j;var nodes=this.body.nodes;var nodeIndices=this.physicsBody.physicsNodeIndices;var forces=this.physicsBody.forces;var nodeDistance=this.options.nodeDistance;for(i=0;i<nodeIndices.length-1;i++){node1=nodes[nodeIndices[i]];for(j=i+1;j<nodeIndices.length;j++){node2=nodes[nodeIndices[j]];if(node1.level===node2.level){dx=node2.x-node1.x;dy=node2.y-node1.y;distance=Math.sqrt(dx*dx+dy*dy);var steepness=.05;if(distance<nodeDistance){repulsingForce=-Math.pow(steepness*distance,2)+Math.pow(steepness*nodeDistance,2)}else{repulsingForce=0}if(distance===0){distance=.01}else{repulsingForce=repulsingForce/distance}fx=dx*repulsingForce;fy=dy*repulsingForce;forces[node1.id].x-=fx;forces[node1.id].y-=fy;forces[node2.id].x+=fx;forces[node2.id].y+=fy}}}}}]);return HierarchicalRepulsionSolver}();exports[\"default\"]=HierarchicalRepulsionSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var SpringSolver=function(){function SpringSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,SpringSolver);this.body=body;this.physicsBody=physicsBody;this.setOptions(options)}(0,_createClass3[\"default\"])(SpringSolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"solve\",value:function solve(){var edgeLength=void 0,edge=void 0;var edgeIndices=this.physicsBody.physicsEdgeIndices;var edges=this.body.edges;var node1=void 0,node2=void 0,node3=void 0;for(var i=0;i<edgeIndices.length;i++){edge=edges[edgeIndices[i]];if(edge.connected===true&&edge.toId!==edge.fromId){if(this.body.nodes[edge.toId]!==undefined&&this.body.nodes[edge.fromId]!==undefined){if(edge.edgeType.via!==undefined){edgeLength=edge.options.length===undefined?this.options.springLength:edge.options.length;node1=edge.to;node2=edge.edgeType.via;node3=edge.from;this._calculateSpringForce(node1,node2,.5*edgeLength);this._calculateSpringForce(node2,node3,.5*edgeLength)}else{edgeLength=edge.options.length===undefined?this.options.springLength*1.5:edge.options.length;this._calculateSpringForce(edge.from,edge.to,edgeLength)}}}}}},{key:\"_calculateSpringForce\",value:function _calculateSpringForce(node1,node2,edgeLength){var dx=node1.x-node2.x;var dy=node1.y-node2.y;var distance=Math.max(Math.sqrt(dx*dx+dy*dy),.01);var springForce=this.options.springConstant*(edgeLength-distance)/distance;var fx=dx*springForce;var fy=dy*springForce;if(this.physicsBody.forces[node1.id]!==undefined){this.physicsBody.forces[node1.id].x+=fx;this.physicsBody.forces[node1.id].y+=fy}if(this.physicsBody.forces[node2.id]!==undefined){this.physicsBody.forces[node2.id].x-=fx;this.physicsBody.forces[node2.id].y-=fy}}}]);return SpringSolver}();exports[\"default\"]=SpringSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var HierarchicalSpringSolver=function(){function HierarchicalSpringSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,HierarchicalSpringSolver);this.body=body;this.physicsBody=physicsBody;this.setOptions(options)}(0,_createClass3[\"default\"])(HierarchicalSpringSolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"solve\",value:function solve(){var edgeLength,edge;var dx,dy,fx,fy,springForce,distance;var edges=this.body.edges;var factor=.5;var edgeIndices=this.physicsBody.physicsEdgeIndices;var nodeIndices=this.physicsBody.physicsNodeIndices;var forces=this.physicsBody.forces;for(var i=0;i<nodeIndices.length;i++){var nodeId=nodeIndices[i];forces[nodeId].springFx=0;forces[nodeId].springFy=0}for(var _i=0;_i<edgeIndices.length;_i++){edge=edges[edgeIndices[_i]];if(edge.connected===true){edgeLength=edge.options.length===undefined?this.options.springLength:edge.options.length;dx=edge.from.x-edge.to.x;dy=edge.from.y-edge.to.y;distance=Math.sqrt(dx*dx+dy*dy);distance=distance===0?.01:distance;springForce=this.options.springConstant*(edgeLength-distance)/distance;fx=dx*springForce;fy=dy*springForce;if(edge.to.level!=edge.from.level){if(forces[edge.toId]!==undefined){forces[edge.toId].springFx-=fx;forces[edge.toId].springFy-=fy}if(forces[edge.fromId]!==undefined){forces[edge.fromId].springFx+=fx;forces[edge.fromId].springFy+=fy}}else{if(forces[edge.toId]!==undefined){forces[edge.toId].x-=factor*fx;forces[edge.toId].y-=factor*fy}if(forces[edge.fromId]!==undefined){forces[edge.fromId].x+=factor*fx;forces[edge.fromId].y+=factor*fy}}}}springForce=1;var springFx,springFy;for(var _i2=0;_i2<nodeIndices.length;_i2++){var _nodeId=nodeIndices[_i2];springFx=Math.min(springForce,Math.max(-springForce,forces[_nodeId].springFx));springFy=Math.min(springForce,Math.max(-springForce,forces[_nodeId].springFy));forces[_nodeId].x+=springFx;forces[_nodeId].y+=springFy}var totalFx=0;var totalFy=0;for(var _i3=0;_i3<nodeIndices.length;_i3++){var _nodeId2=nodeIndices[_i3];totalFx+=forces[_nodeId2].x;totalFy+=forces[_nodeId2].y}var correctionFx=totalFx/nodeIndices.length;var correctionFy=totalFy/nodeIndices.length;for(var _i4=0;_i4<nodeIndices.length;_i4++){var _nodeId3=nodeIndices[_i4];forces[_nodeId3].x-=correctionFx;forces[_nodeId3].y-=correctionFy}}}]);return HierarchicalSpringSolver}();exports[\"default\"]=HierarchicalSpringSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _BarnesHutSolver2=__webpack_require__(120);var _BarnesHutSolver3=_interopRequireDefault(_BarnesHutSolver2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var ForceAtlas2BasedRepulsionSolver=function(_BarnesHutSolver){(0,_inherits3[\"default\"])(ForceAtlas2BasedRepulsionSolver,_BarnesHutSolver);function ForceAtlas2BasedRepulsionSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,ForceAtlas2BasedRepulsionSolver);return(0,_possibleConstructorReturn3[\"default\"])(this,(ForceAtlas2BasedRepulsionSolver.__proto__||(0,_getPrototypeOf2[\"default\"])(ForceAtlas2BasedRepulsionSolver)).call(this,body,physicsBody,options))}(0,_createClass3[\"default\"])(ForceAtlas2BasedRepulsionSolver,[{key:\"_calculateForces\",value:function _calculateForces(distance,dx,dy,node,parentBranch){if(distance===0){distance=.1*Math.random();dx=distance}if(this.overlapAvoidanceFactor<1&&node.shape.radius){distance=Math.max(.1+this.overlapAvoidanceFactor*node.shape.radius,distance-node.shape.radius)}var degree=node.edges.length+1;var gravityForce=this.options.gravitationalConstant*parentBranch.mass*node.options.mass*degree/Math.pow(distance,2);var fx=dx*gravityForce;var fy=dy*gravityForce;this.physicsBody.forces[node.id].x+=fx;this.physicsBody.forces[node.id].y+=fy}}]);return ForceAtlas2BasedRepulsionSolver}(_BarnesHutSolver3[\"default\"]);exports[\"default\"]=ForceAtlas2BasedRepulsionSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _CentralGravitySolver2=__webpack_require__(121);var _CentralGravitySolver3=_interopRequireDefault(_CentralGravitySolver2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var ForceAtlas2BasedCentralGravitySolver=function(_CentralGravitySolver){(0,_inherits3[\"default\"])(ForceAtlas2BasedCentralGravitySolver,_CentralGravitySolver);function ForceAtlas2BasedCentralGravitySolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,ForceAtlas2BasedCentralGravitySolver);return(0,_possibleConstructorReturn3[\"default\"])(this,(ForceAtlas2BasedCentralGravitySolver.__proto__||(0,_getPrototypeOf2[\"default\"])(ForceAtlas2BasedCentralGravitySolver)).call(this,body,physicsBody,options))}(0,_createClass3[\"default\"])(ForceAtlas2BasedCentralGravitySolver,[{key:\"_calculateForces\",value:function _calculateForces(distance,dx,dy,forces,node){if(distance>0){var degree=node.edges.length+1;var gravityForce=this.options.centralGravity*degree*node.options.mass;forces[node.id].x=dx*gravityForce;forces[node.id].y=dy*gravityForce}}}]);return ForceAtlas2BasedCentralGravitySolver}(_CentralGravitySolver3[\"default\"]);exports[\"default\"]=ForceAtlas2BasedCentralGravitySolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var NetworkUtil=__webpack_require__(76)[\"default\"];var Cluster=__webpack_require__(228)[\"default\"];var Edge=__webpack_require__(74)[\"default\"];var Node=__webpack_require__(47)[\"default\"];var ClusterEngine=function(){function ClusterEngine(body){var _this=this;(0,_classCallCheck3[\"default\"])(this,ClusterEngine);this.body=body;this.clusteredNodes={};this.clusteredEdges={};this.options={};this.defaultOptions={};util.extend(this.options,this.defaultOptions);this.body.emitter.on(\"_resetData\",function(){_this.clusteredNodes={};_this.clusteredEdges={}})}(0,_createClass3[\"default\"])(ClusterEngine,[{key:\"clusterByHubsize\",value:function clusterByHubsize(hubsize,options){if(hubsize===undefined){hubsize=this._getHubSize()}else if((typeof hubsize===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(hubsize))===\"object\"){options=this._checkOptions(hubsize);hubsize=this._getHubSize()}var nodesToCluster=[];for(var i=0;i<this.body.nodeIndices.length;i++){var node=this.body.nodes[this.body.nodeIndices[i]];if(node.edges.length>=hubsize){nodesToCluster.push(node.id)}}for(var _i=0;_i<nodesToCluster.length;_i++){this.clusterByConnection(nodesToCluster[_i],options,true)}this.body.emitter.emit(\"_dataChanged\")}},{key:\"cluster\",value:function cluster(){var _this2=this;var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var refreshData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(options.joinCondition===undefined){throw new Error(\"Cannot call clusterByNodeData without a joinCondition function in the options.\")}options=this._checkOptions(options);var childNodesObj={};var childEdgesObj={};util.forEach(this.body.nodes,function(node,nodeId){var clonedOptions=NetworkUtil.cloneOptions(node);if(options.joinCondition(clonedOptions)===true){childNodesObj[nodeId]=node;util.forEach(node.edges,function(edge){if(_this2.clusteredEdges[edge.id]===undefined){childEdgesObj[edge.id]=edge}})}});this._cluster(childNodesObj,childEdgesObj,options,refreshData)}},{key:\"clusterByEdgeCount\",value:function clusterByEdgeCount(edgeCount,options){var _this3=this;var refreshData=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;options=this._checkOptions(options);var clusters=[];var usedNodes={};var edge=void 0,edges=void 0,relevantEdgeCount=void 0;var _loop=function _loop(i){var childNodesObj={};var childEdgesObj={};var nodeId=_this3.body.nodeIndices[i];var node=_this3.body.nodes[nodeId];if(usedNodes[nodeId]===undefined){relevantEdgeCount=0;edges=[];for(var j=0;j<node.edges.length;j++){edge=node.edges[j];if(_this3.clusteredEdges[edge.id]===undefined){if(edge.toId!==edge.fromId){relevantEdgeCount++}edges.push(edge)}}if(relevantEdgeCount===edgeCount){checkJoinCondition=function checkJoinCondition(node){if(options.joinCondition===undefined||options.joinCondition===null){return true}var clonedOptions=NetworkUtil.cloneOptions(node);return options.joinCondition(clonedOptions)};var gatheringSuccessful=true;for(var _j=0;_j<edges.length;_j++){edge=edges[_j];var childNodeId=_this3._getConnectedId(edge,nodeId);if(checkJoinCondition(node)){childEdgesObj[edge.id]=edge;childNodesObj[nodeId]=node;childNodesObj[childNodeId]=_this3.body.nodes[childNodeId];usedNodes[nodeId]=true}else{gatheringSuccessful=false;break}}if((0,_keys2[\"default\"])(childNodesObj).length>0&&(0,_keys2[\"default\"])(childEdgesObj).length>0&&gatheringSuccessful===true){findClusterData=function findClusterData(){for(var n=0;n<clusters.length;++n){for(var m in childNodesObj){if(clusters[n].nodes[m]!==undefined){return clusters[n]}}}return undefined};foundCluster=findClusterData();if(foundCluster!==undefined){for(var m in childNodesObj){if(foundCluster.nodes[m]===undefined){foundCluster.nodes[m]=childNodesObj[m]}}for(var _m in childEdgesObj){if(foundCluster.edges[_m]===undefined){foundCluster.edges[_m]=childEdgesObj[_m]}}}else{clusters.push({nodes:childNodesObj,edges:childEdgesObj})}}}}};for(var i=0;i<this.body.nodeIndices.length;i++){var checkJoinCondition;var findClusterData;var foundCluster;_loop(i)}for(var i=0;i<clusters.length;i++){this._cluster(clusters[i].nodes,clusters[i].edges,options,false)}if(refreshData===true){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"clusterOutliers\",value:function clusterOutliers(options){var refreshData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;this.clusterByEdgeCount(1,options,refreshData)}},{key:\"clusterBridges\",value:function clusterBridges(options){var refreshData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;this.clusterByEdgeCount(2,options,refreshData)}},{key:\"clusterByConnection\",value:function clusterByConnection(nodeId,options){var refreshData=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;if(nodeId===undefined){throw new Error(\"No nodeId supplied to clusterByConnection!\")}if(this.body.nodes[nodeId]===undefined){throw new Error(\"The nodeId given to clusterByConnection does not exist!\")}var node=this.body.nodes[nodeId];options=this._checkOptions(options,node);if(options.clusterNodeProperties.x===undefined){options.clusterNodeProperties.x=node.x}if(options.clusterNodeProperties.y===undefined){options.clusterNodeProperties.y=node.y}if(options.clusterNodeProperties.fixed===undefined){options.clusterNodeProperties.fixed={};options.clusterNodeProperties.fixed.x=node.options.fixed.x;options.clusterNodeProperties.fixed.y=node.options.fixed.y}var childNodesObj={};var childEdgesObj={};var parentNodeId=node.id;var parentClonedOptions=NetworkUtil.cloneOptions(node);childNodesObj[parentNodeId]=node;for(var i=0;i<node.edges.length;i++){var edge=node.edges[i];if(this.clusteredEdges[edge.id]===undefined){var childNodeId=this._getConnectedId(edge,parentNodeId);if(this.clusteredNodes[childNodeId]===undefined){if(childNodeId!==parentNodeId){if(options.joinCondition===undefined){childEdgesObj[edge.id]=edge;childNodesObj[childNodeId]=this.body.nodes[childNodeId]}else{var childClonedOptions=NetworkUtil.cloneOptions(this.body.nodes[childNodeId]);if(options.joinCondition(parentClonedOptions,childClonedOptions)===true){childEdgesObj[edge.id]=edge;childNodesObj[childNodeId]=this.body.nodes[childNodeId]}}}else{childEdgesObj[edge.id]=edge}}}}var childNodeIDs=(0,_keys2[\"default\"])(childNodesObj).map(function(childNode){return childNodesObj[childNode].id});for(childNode in childNodesObj){if(!childNodesObj.hasOwnProperty(childNode))continue;var childNode=childNodesObj[childNode];for(var y=0;y<childNode.edges.length;y++){var childEdge=childNode.edges[y];if(childNodeIDs.indexOf(this._getConnectedId(childEdge,childNode.id))>-1){childEdgesObj[childEdge.id]=childEdge}}}this._cluster(childNodesObj,childEdgesObj,options,refreshData)}},{key:\"_createClusterEdges\",value:function _createClusterEdges(childNodesObj,childEdgesObj,clusterNodeProperties,clusterEdgeProperties){var edge=void 0,childNodeId=void 0,childNode=void 0,toId=void 0,fromId=void 0,otherNodeId=void 0;var childKeys=(0,_keys2[\"default\"])(childNodesObj);var createEdges=[];for(var i=0;i<childKeys.length;i++){childNodeId=childKeys[i];childNode=childNodesObj[childNodeId];for(var j=0;j<childNode.edges.length;j++){edge=childNode.edges[j];if(this.clusteredEdges[edge.id]===undefined){if(edge.toId==edge.fromId){childEdgesObj[edge.id]=edge}else{if(edge.toId==childNodeId){toId=clusterNodeProperties.id;fromId=edge.fromId;otherNodeId=fromId}else{toId=edge.toId;fromId=clusterNodeProperties.id;otherNodeId=toId}}if(childNodesObj[otherNodeId]===undefined){createEdges.push({edge:edge,fromId:fromId,toId:toId})}}}}var newEdges=[];var getNewEdge=function getNewEdge(createdEdge){for(var _j2=0;_j2<newEdges.length;_j2++){var newEdge=newEdges[_j2];var matchToDirection=createdEdge.fromId===newEdge.fromId&&createdEdge.toId===newEdge.toId;var matchFromDirection=createdEdge.fromId===newEdge.toId&&createdEdge.toId===newEdge.fromId;if(matchToDirection||matchFromDirection){return newEdge}}return null};for(var _j3=0;_j3<createEdges.length;_j3++){var createdEdge=createEdges[_j3];var _edge=createdEdge.edge;var newEdge=getNewEdge(createdEdge);if(newEdge===null){newEdge=this._createClusteredEdge(createdEdge.fromId,createdEdge.toId,_edge,clusterEdgeProperties);newEdges.push(newEdge)}else{newEdge.clusteringEdgeReplacingIds.push(_edge.id)}this.body.edges[_edge.id].edgeReplacedById=newEdge.id;this._backupEdgeOptions(_edge);_edge.setOptions({physics:false})}}},{key:\"_checkOptions\",value:function _checkOptions(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(options.clusterEdgeProperties===undefined){options.clusterEdgeProperties={}}if(options.clusterNodeProperties===undefined){options.clusterNodeProperties={}}return options}},{key:\"_cluster\",value:function _cluster(childNodesObj,childEdgesObj,options){var refreshData=arguments.length>3&&arguments[3]!==undefined?arguments[3]:true;var tmpNodesToRemove=[];for(var _nodeId in childNodesObj){if(childNodesObj.hasOwnProperty(_nodeId)){if(this.clusteredNodes[_nodeId]!==undefined){tmpNodesToRemove.push(_nodeId)}}}for(var n=0;n<tmpNodesToRemove.length;++n){delete childNodesObj[tmpNodesToRemove[n]]}if((0,_keys2[\"default\"])(childNodesObj).length==0){return}if((0,_keys2[\"default\"])(childNodesObj).length==1&&options.clusterNodeProperties.allowSingleNodeCluster!=true){return}var clusterNodeProperties=util.deepExtend({},options.clusterNodeProperties);if(options.processProperties!==undefined){var childNodesOptions=[];for(var _nodeId2 in childNodesObj){if(childNodesObj.hasOwnProperty(_nodeId2)){var clonedOptions=NetworkUtil.cloneOptions(childNodesObj[_nodeId2]);childNodesOptions.push(clonedOptions)}}var childEdgesOptions=[];for(var edgeId in childEdgesObj){if(childEdgesObj.hasOwnProperty(edgeId)){if(edgeId.substr(0,12)!==\"clusterEdge:\"){var _clonedOptions=NetworkUtil.cloneOptions(childEdgesObj[edgeId],\"edge\");childEdgesOptions.push(_clonedOptions)}}}clusterNodeProperties=options.processProperties(clusterNodeProperties,childNodesOptions,childEdgesOptions);if(!clusterNodeProperties){throw new Error(\"The processProperties function does not return properties!\")}}if(clusterNodeProperties.id===undefined){clusterNodeProperties.id=\"cluster:\"+util.randomUUID()}var clusterId=clusterNodeProperties.id;if(clusterNodeProperties.label===undefined){clusterNodeProperties.label=\"cluster\"}var pos=undefined;if(clusterNodeProperties.x===undefined){pos=this._getClusterPosition(childNodesObj);clusterNodeProperties.x=pos.x}if(clusterNodeProperties.y===undefined){if(pos===undefined){pos=this._getClusterPosition(childNodesObj)}clusterNodeProperties.y=pos.y}clusterNodeProperties.id=clusterId;var clusterNode=this.body.functions.createNode(clusterNodeProperties,Cluster);clusterNode.containedNodes=childNodesObj;clusterNode.containedEdges=childEdgesObj;clusterNode.clusterEdgeProperties=options.clusterEdgeProperties;this.body.nodes[clusterNodeProperties.id]=clusterNode;this._clusterEdges(childNodesObj,childEdgesObj,clusterNodeProperties,options.clusterEdgeProperties);clusterNodeProperties.id=undefined;if(refreshData===true){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"_backupEdgeOptions\",value:function _backupEdgeOptions(edge){if(this.clusteredEdges[edge.id]===undefined){this.clusteredEdges[edge.id]={physics:edge.options.physics}}}},{key:\"_restoreEdge\",value:function _restoreEdge(edge){var originalOptions=this.clusteredEdges[edge.id];if(originalOptions!==undefined){edge.setOptions({physics:originalOptions.physics});delete this.clusteredEdges[edge.id]}}},{key:\"isCluster\",value:function isCluster(nodeId){if(this.body.nodes[nodeId]!==undefined){return this.body.nodes[nodeId].isCluster===true}else{console.log(\"Node does not exist.\");return false}}},{key:\"_getClusterPosition\",value:function _getClusterPosition(childNodesObj){var childKeys=(0,_keys2[\"default\"])(childNodesObj);var minX=childNodesObj[childKeys[0]].x;var maxX=childNodesObj[childKeys[0]].x;var minY=childNodesObj[childKeys[0]].y;var maxY=childNodesObj[childKeys[0]].y;var node=void 0;for(var i=1;i<childKeys.length;i++){node=childNodesObj[childKeys[i]];minX=node.x<minX?node.x:minX;maxX=node.x>maxX?node.x:maxX\n;minY=node.y<minY?node.y:minY;maxY=node.y>maxY?node.y:maxY}return{x:.5*(minX+maxX),y:.5*(minY+maxY)}}},{key:\"openCluster\",value:function openCluster(clusterNodeId,options){var refreshData=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;if(clusterNodeId===undefined){throw new Error(\"No clusterNodeId supplied to openCluster.\")}var clusterNode=this.body.nodes[clusterNodeId];if(clusterNode===undefined){throw new Error(\"The clusterNodeId supplied to openCluster does not exist.\")}if(clusterNode.isCluster!==true||clusterNode.containedNodes===undefined||clusterNode.containedEdges===undefined){throw new Error(\"The node:\"+clusterNodeId+\" is not a valid cluster.\")}var stack=this.findNode(clusterNodeId);var parentIndex=stack.indexOf(clusterNodeId)-1;if(parentIndex>=0){var parentClusterNodeId=stack[parentIndex];var parentClusterNode=this.body.nodes[parentClusterNodeId];parentClusterNode._openChildCluster(clusterNodeId);delete this.body.nodes[clusterNodeId];if(refreshData===true){this.body.emitter.emit(\"_dataChanged\")}return}var containedNodes=clusterNode.containedNodes;var containedEdges=clusterNode.containedEdges;if(options!==undefined&&options.releaseFunction!==undefined&&typeof options.releaseFunction===\"function\"){var positions={};var clusterPosition={x:clusterNode.x,y:clusterNode.y};for(var _nodeId3 in containedNodes){if(containedNodes.hasOwnProperty(_nodeId3)){var containedNode=this.body.nodes[_nodeId3];positions[_nodeId3]={x:containedNode.x,y:containedNode.y}}}var newPositions=options.releaseFunction(clusterPosition,positions);for(var _nodeId4 in containedNodes){if(containedNodes.hasOwnProperty(_nodeId4)){var _containedNode=this.body.nodes[_nodeId4];if(newPositions[_nodeId4]!==undefined){_containedNode.x=newPositions[_nodeId4].x===undefined?clusterNode.x:newPositions[_nodeId4].x;_containedNode.y=newPositions[_nodeId4].y===undefined?clusterNode.y:newPositions[_nodeId4].y}}}}else{util.forEach(containedNodes,function(containedNode){if(containedNode.options.fixed.x===false){containedNode.x=clusterNode.x}if(containedNode.options.fixed.y===false){containedNode.y=clusterNode.y}})}for(var _nodeId5 in containedNodes){if(containedNodes.hasOwnProperty(_nodeId5)){var _containedNode2=this.body.nodes[_nodeId5];_containedNode2.vx=clusterNode.vx;_containedNode2.vy=clusterNode.vy;_containedNode2.setOptions({physics:true});delete this.clusteredNodes[_nodeId5]}}var edgesToBeDeleted=[];for(var i=0;i<clusterNode.edges.length;i++){edgesToBeDeleted.push(clusterNode.edges[i])}for(var _i2=0;_i2<edgesToBeDeleted.length;_i2++){var edge=edgesToBeDeleted[_i2];var otherNodeId=this._getConnectedId(edge,clusterNodeId);var otherNode=this.clusteredNodes[otherNodeId];for(var j=0;j<edge.clusteringEdgeReplacingIds.length;j++){var transferId=edge.clusteringEdgeReplacingIds[j];var transferEdge=this.body.edges[transferId];if(transferEdge===undefined)continue;if(otherNode!==undefined){var otherCluster=this.body.nodes[otherNode.clusterId];otherCluster.containedEdges[transferEdge.id]=transferEdge;delete containedEdges[transferEdge.id];var fromId=transferEdge.fromId;var toId=transferEdge.toId;if(transferEdge.toId==otherNodeId){toId=otherNode.clusterId}else{fromId=otherNode.clusterId}this._createClusteredEdge(fromId,toId,transferEdge,otherCluster.clusterEdgeProperties,{hidden:false,physics:true})}else{this._restoreEdge(transferEdge)}}edge.remove()}for(var edgeId in containedEdges){if(containedEdges.hasOwnProperty(edgeId)){this._restoreEdge(containedEdges[edgeId])}}delete this.body.nodes[clusterNodeId];if(refreshData===true){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"getNodesInCluster\",value:function getNodesInCluster(clusterId){var nodesArray=[];if(this.isCluster(clusterId)===true){var containedNodes=this.body.nodes[clusterId].containedNodes;for(var _nodeId6 in containedNodes){if(containedNodes.hasOwnProperty(_nodeId6)){nodesArray.push(this.body.nodes[_nodeId6].id)}}}return nodesArray}},{key:\"findNode\",value:function findNode(nodeId){var stack=[];var max=100;var counter=0;var node=void 0;while(this.clusteredNodes[nodeId]!==undefined&&counter<max){node=this.body.nodes[nodeId];if(node===undefined)return[];stack.push(node.id);nodeId=this.clusteredNodes[nodeId].clusterId;counter++}node=this.body.nodes[nodeId];if(node===undefined)return[];stack.push(node.id);stack.reverse();return stack}},{key:\"updateClusteredNode\",value:function updateClusteredNode(clusteredNodeId,newOptions){if(clusteredNodeId===undefined){throw new Error(\"No clusteredNodeId supplied to updateClusteredNode.\")}if(newOptions===undefined){throw new Error(\"No newOptions supplied to updateClusteredNode.\")}if(this.body.nodes[clusteredNodeId]===undefined){throw new Error(\"The clusteredNodeId supplied to updateClusteredNode does not exist.\")}this.body.nodes[clusteredNodeId].setOptions(newOptions);this.body.emitter.emit(\"_dataChanged\")}},{key:\"updateEdge\",value:function updateEdge(startEdgeId,newOptions){if(startEdgeId===undefined){throw new Error(\"No startEdgeId supplied to updateEdge.\")}if(newOptions===undefined){throw new Error(\"No newOptions supplied to updateEdge.\")}if(this.body.edges[startEdgeId]===undefined){throw new Error(\"The startEdgeId supplied to updateEdge does not exist.\")}var allEdgeIds=this.getClusteredEdges(startEdgeId);for(var i=0;i<allEdgeIds.length;i++){var edge=this.body.edges[allEdgeIds[i]];edge.setOptions(newOptions)}this.body.emitter.emit(\"_dataChanged\")}},{key:\"getClusteredEdges\",value:function getClusteredEdges(edgeId){var stack=[];var max=100;var counter=0;while(edgeId!==undefined&&this.body.edges[edgeId]!==undefined&&counter<max){stack.push(this.body.edges[edgeId].id);edgeId=this.body.edges[edgeId].edgeReplacedById;counter++}stack.reverse();return stack}},{key:\"getBaseEdge\",value:function getBaseEdge(clusteredEdgeId){return this.getBaseEdges(clusteredEdgeId)[0]}},{key:\"getBaseEdges\",value:function getBaseEdges(clusteredEdgeId){var IdsToHandle=[clusteredEdgeId];var doneIds=[];var foundIds=[];var max=100;var counter=0;while(IdsToHandle.length>0&&counter<max){var nextId=IdsToHandle.pop();if(nextId===undefined)continue;var nextEdge=this.body.edges[nextId];if(nextEdge===undefined)continue;counter++;var replacingIds=nextEdge.clusteringEdgeReplacingIds;if(replacingIds===undefined){foundIds.push(nextId)}else{for(var i=0;i<replacingIds.length;++i){var replacingId=replacingIds[i];if(IdsToHandle.indexOf(replacingIds)!==-1||doneIds.indexOf(replacingIds)!==-1){continue}IdsToHandle.push(replacingId)}}doneIds.push(nextId)}return foundIds}},{key:\"_getConnectedId\",value:function _getConnectedId(edge,nodeId){if(edge.toId!=nodeId){return edge.toId}else if(edge.fromId!=nodeId){return edge.fromId}else{return edge.fromId}}},{key:\"_getHubSize\",value:function _getHubSize(){var average=0;var averageSquared=0;var hubCounter=0;var largestHub=0;for(var i=0;i<this.body.nodeIndices.length;i++){var _node=this.body.nodes[this.body.nodeIndices[i]];if(_node.edges.length>largestHub){largestHub=_node.edges.length}average+=_node.edges.length;averageSquared+=Math.pow(_node.edges.length,2);hubCounter+=1}average=average/hubCounter;averageSquared=averageSquared/hubCounter;var variance=averageSquared-Math.pow(average,2);var standardDeviation=Math.sqrt(variance);var hubThreshold=Math.floor(average+2*standardDeviation);if(hubThreshold>largestHub){hubThreshold=largestHub}return hubThreshold}},{key:\"_createClusteredEdge\",value:function _createClusteredEdge(fromId,toId,baseEdge,clusterEdgeProperties,extraOptions){var clonedOptions=NetworkUtil.cloneOptions(baseEdge,\"edge\");util.deepExtend(clonedOptions,clusterEdgeProperties);clonedOptions.from=fromId;clonedOptions.to=toId;clonedOptions.id=\"clusterEdge:\"+util.randomUUID();if(extraOptions!==undefined){util.deepExtend(clonedOptions,extraOptions)}var newEdge=this.body.functions.createEdge(clonedOptions);newEdge.clusteringEdgeReplacingIds=[baseEdge.id];newEdge.connect();this.body.edges[newEdge.id]=newEdge;return newEdge}},{key:\"_clusterEdges\",value:function _clusterEdges(childNodes,childEdges,clusterNode,clusterEdgeProperties){if(childEdges instanceof Edge){var edge=childEdges;var obj={};obj[edge.id]=edge;childEdges=obj}if(childNodes instanceof Node){var _node2=childNodes;var _obj={};_obj[_node2.id]=_node2;childNodes=_obj}if(clusterNode===undefined||clusterNode===null){throw new Error(\"_clusterEdges: parameter clusterNode required\")}if(clusterEdgeProperties===undefined){clusterEdgeProperties=clusterNode.clusterEdgeProperties}this._createClusterEdges(childNodes,childEdges,clusterNode,clusterEdgeProperties);for(var edgeId in childEdges){if(childEdges.hasOwnProperty(edgeId)){if(this.body.edges[edgeId]!==undefined){var _edge2=this.body.edges[edgeId];this._backupEdgeOptions(_edge2);_edge2.setOptions({physics:false})}}}for(var _nodeId7 in childNodes){if(childNodes.hasOwnProperty(_nodeId7)){this.clusteredNodes[_nodeId7]={clusterId:clusterNode.id,node:this.body.nodes[_nodeId7]};this.body.nodes[_nodeId7].setOptions({physics:false})}}}},{key:\"_getClusterNodeForNode\",value:function _getClusterNodeForNode(nodeId){if(nodeId===undefined)return undefined;var clusteredNode=this.clusteredNodes[nodeId];if(clusteredNode===undefined)return undefined;var clusterId=clusteredNode.clusterId;if(clusterId===undefined)return undefined;return this.body.nodes[clusterId]}},{key:\"_filter\",value:function _filter(arr,callback){var ret=[];util.forEach(arr,function(item){if(callback(item)){ret.push(item)}});return ret}},{key:\"_updateState\",value:function _updateState(){var _this4=this;var nodeId=void 0;var deletedNodeIds=[];var deletedEdgeIds=[];var eachClusterNode=function eachClusterNode(callback){util.forEach(_this4.body.nodes,function(node){if(node.isCluster===true){callback(node)}})};for(nodeId in this.clusteredNodes){if(!this.clusteredNodes.hasOwnProperty(nodeId))continue;var _node3=this.body.nodes[nodeId];if(_node3===undefined){deletedNodeIds.push(nodeId)}}eachClusterNode(function(clusterNode){for(var n=0;n<deletedNodeIds.length;n++){delete clusterNode.containedNodes[deletedNodeIds[n]]}});for(var n=0;n<deletedNodeIds.length;n++){delete this.clusteredNodes[deletedNodeIds[n]]}util.forEach(this.clusteredEdges,function(edgeId){var edge=_this4.body.edges[edgeId];if(edge===undefined||!edge.endPointsValid()){deletedEdgeIds.push(edgeId)}});eachClusterNode(function(clusterNode){util.forEach(clusterNode.containedEdges,function(edge,edgeId){if(!edge.endPointsValid()&&deletedEdgeIds.indexOf(edgeId)===-1){deletedEdgeIds.push(edgeId)}})});util.forEach(this.body.edges,function(edge,edgeId){var isValid=true;var replacedIds=edge.clusteringEdgeReplacingIds;if(replacedIds!==undefined){var numValid=0;util.forEach(replacedIds,function(containedEdgeId){var containedEdge=_this4.body.edges[containedEdgeId];if(containedEdge!==undefined&&containedEdge.endPointsValid()){numValid+=1}});isValid=numValid>0}if(!edge.endPointsValid()||!isValid){deletedEdgeIds.push(edgeId)}});eachClusterNode(function(clusterNode){util.forEach(deletedEdgeIds,function(deletedEdgeId){delete clusterNode.containedEdges[deletedEdgeId];util.forEach(clusterNode.edges,function(edge,m){if(edge.id===deletedEdgeId){clusterNode.edges[m]=null;return}edge.clusteringEdgeReplacingIds=_this4._filter(edge.clusteringEdgeReplacingIds,function(id){return deletedEdgeIds.indexOf(id)===-1})});clusterNode.edges=_this4._filter(clusterNode.edges,function(item){return item!==null})})});util.forEach(deletedEdgeIds,function(edgeId){delete _this4.clusteredEdges[edgeId]});util.forEach(deletedEdgeIds,function(edgeId){delete _this4.body.edges[edgeId]});var ids=(0,_keys2[\"default\"])(this.body.edges);util.forEach(ids,function(edgeId){var edge=_this4.body.edges[edgeId];var shouldBeClustered=_this4._isClusteredNode(edge.fromId)||_this4._isClusteredNode(edge.toId);if(shouldBeClustered===_this4._isClusteredEdge(edge.id)){return}if(shouldBeClustered){var clusterFrom=_this4._getClusterNodeForNode(edge.fromId);if(clusterFrom!==undefined){_this4._clusterEdges(_this4.body.nodes[edge.fromId],edge,clusterFrom)}var clusterTo=_this4._getClusterNodeForNode(edge.toId);if(clusterTo!==undefined){_this4._clusterEdges(_this4.body.nodes[edge.toId],edge,clusterTo)}}else{throw new Error(\"remove edge from clustering not implemented!\")}});var changed=false;var continueLoop=true;var _loop2=function _loop2(){var clustersToOpen=[];eachClusterNode(function(clusterNode){var numNodes=(0,_keys2[\"default\"])(clusterNode.containedNodes).length;var allowSingle=clusterNode.options.allowSingleNodeCluster===true;if(allowSingle&&numNodes<1||!allowSingle&&numNodes<2){clustersToOpen.push(clusterNode.id)}});for(var _n=0;_n<clustersToOpen.length;++_n){_this4.openCluster(clustersToOpen[_n],{},false)}continueLoop=clustersToOpen.length>0;changed=changed||continueLoop};while(continueLoop){_loop2()}if(changed){this._updateState()}}},{key:\"_isClusteredNode\",value:function _isClusteredNode(nodeId){return this.clusteredNodes[nodeId]!==undefined}},{key:\"_isClusteredEdge\",value:function _isClusteredEdge(edgeId){return this.clusteredEdges[edgeId]!==undefined}}]);return ClusterEngine}();exports[\"default\"]=ClusterEngine},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Node=__webpack_require__(47)[\"default\"];var Cluster=function(_Node){(0,_inherits3[\"default\"])(Cluster,_Node);function Cluster(options,body,imagelist,grouplist,globalOptions,defaultOptions){(0,_classCallCheck3[\"default\"])(this,Cluster);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Cluster.__proto__||(0,_getPrototypeOf2[\"default\"])(Cluster)).call(this,options,body,imagelist,grouplist,globalOptions,defaultOptions));_this.isCluster=true;_this.containedNodes={};_this.containedEdges={};return _this}(0,_createClass3[\"default\"])(Cluster,[{key:\"_openChildCluster\",value:function _openChildCluster(childClusterId){var _this2=this;var childCluster=this.body.nodes[childClusterId];if(this.containedNodes[childClusterId]===undefined){throw new Error(\"node with id: \"+childClusterId+\" not in current cluster\")}if(!childCluster.isCluster){throw new Error(\"node with id: \"+childClusterId+\" is not a cluster\")}delete this.containedNodes[childClusterId];util.forEach(childCluster.edges,function(edge){delete _this2.containedEdges[edge.id]});util.forEach(childCluster.containedNodes,function(node,nodeId){_this2.containedNodes[nodeId]=node});childCluster.containedNodes={};util.forEach(childCluster.containedEdges,function(edge,edgeId){_this2.containedEdges[edgeId]=edge});childCluster.containedEdges={};util.forEach(childCluster.edges,function(clusterEdge){util.forEach(_this2.edges,function(parentClusterEdge){var index=parentClusterEdge.clusteringEdgeReplacingIds.indexOf(clusterEdge.id);if(index===-1)return;util.forEach(clusterEdge.clusteringEdgeReplacingIds,function(srcId){parentClusterEdge.clusteringEdgeReplacingIds.push(srcId);_this2.body.edges[srcId].edgeReplacedById=parentClusterEdge.id});parentClusterEdge.clusteringEdgeReplacingIds.splice(index,1)})});childCluster.edges=[]}}]);return Cluster}(Node);exports[\"default\"]=Cluster},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _initRequestAnimationFrame(){var func;if(window!==undefined){func=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame}if(func===undefined){window.requestAnimationFrame=function(callback){callback()}}else{window.requestAnimationFrame=func}}var util=__webpack_require__(2);var CanvasRenderer=function(){function CanvasRenderer(body,canvas){(0,_classCallCheck3[\"default\"])(this,CanvasRenderer);_initRequestAnimationFrame();this.body=body;this.canvas=canvas;this.redrawRequested=false;this.renderTimer=undefined;this.requiresTimeout=true;this.renderingActive=false;this.renderRequests=0;this.allowRedraw=true;this.dragging=false;this.options={};this.defaultOptions={hideEdgesOnDrag:false,hideNodesOnDrag:false};util.extend(this.options,this.defaultOptions);this._determineBrowserMethod();this.bindEventListeners()}(0,_createClass3[\"default\"])(CanvasRenderer,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this=this;this.body.emitter.on(\"dragStart\",function(){_this.dragging=true});this.body.emitter.on(\"dragEnd\",function(){_this.dragging=false});this.body.emitter.on(\"_resizeNodes\",function(){_this._resizeNodes()});this.body.emitter.on(\"_redraw\",function(){if(_this.renderingActive===false){_this._redraw()}});this.body.emitter.on(\"_blockRedraw\",function(){_this.allowRedraw=false});this.body.emitter.on(\"_allowRedraw\",function(){_this.allowRedraw=true;_this.redrawRequested=false});this.body.emitter.on(\"_requestRedraw\",this._requestRedraw.bind(this));this.body.emitter.on(\"_startRendering\",function(){_this.renderRequests+=1;_this.renderingActive=true;_this._startRendering()});this.body.emitter.on(\"_stopRendering\",function(){_this.renderRequests-=1;_this.renderingActive=_this.renderRequests>0;_this.renderTimer=undefined});this.body.emitter.on(\"destroy\",function(){_this.renderRequests=0;_this.allowRedraw=false;_this.renderingActive=false;if(_this.requiresTimeout===true){clearTimeout(_this.renderTimer)}else{window.cancelAnimationFrame(_this.renderTimer)}_this.body.emitter.off()})}},{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){var fields=[\"hideEdgesOnDrag\",\"hideNodesOnDrag\"];util.selectiveDeepExtend(fields,this.options,options)}}},{key:\"_requestNextFrame\",value:function _requestNextFrame(callback,delay){if(typeof window===\"undefined\")return;var timer=void 0;var myWindow=window;if(this.requiresTimeout===true){timer=myWindow.setTimeout(callback,delay)}else{if(myWindow.requestAnimationFrame){timer=myWindow.requestAnimationFrame(callback)}}return timer}},{key:\"_startRendering\",value:function _startRendering(){if(this.renderingActive===true){if(this.renderTimer===undefined){this.renderTimer=this._requestNextFrame(this._renderStep.bind(this),this.simulationInterval)}}}},{key:\"_renderStep\",value:function _renderStep(){if(this.renderingActive===true){this.renderTimer=undefined;if(this.requiresTimeout===true){this._startRendering()}this._redraw();if(this.requiresTimeout===false){this._startRendering()}}}},{key:\"redraw\",value:function redraw(){this.body.emitter.emit(\"setSize\");this._redraw()}},{key:\"_requestRedraw\",value:function _requestRedraw(){var _this2=this;if(this.redrawRequested!==true&&this.renderingActive===false&&this.allowRedraw===true){this.redrawRequested=true;this._requestNextFrame(function(){_this2._redraw(false)},0)}}},{key:\"_redraw\",value:function _redraw(){var hidden=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(this.allowRedraw===true){this.body.emitter.emit(\"initRedraw\");this.redrawRequested=false;if(this.canvas.frame.canvas.width===0||this.canvas.frame.canvas.height===0){this.canvas.setSize()}this.canvas.setTransform();var ctx=this.canvas.getContext();var w=this.canvas.frame.canvas.clientWidth;var h=this.canvas.frame.canvas.clientHeight;ctx.clearRect(0,0,w,h);if(this.canvas.frame.clientWidth===0){return}ctx.save();ctx.translate(this.body.view.translation.x,this.body.view.translation.y);ctx.scale(this.body.view.scale,this.body.view.scale);ctx.beginPath();this.body.emitter.emit(\"beforeDrawing\",ctx);ctx.closePath();if(hidden===false){if(this.dragging===false||this.dragging===true&&this.options.hideEdgesOnDrag===false){this._drawEdges(ctx)}}if(this.dragging===false||this.dragging===true&&this.options.hideNodesOnDrag===false){this._drawNodes(ctx,hidden)}ctx.beginPath();this.body.emitter.emit(\"afterDrawing\",ctx);ctx.closePath();ctx.restore();if(hidden===true){ctx.clearRect(0,0,w,h)}}}},{key:\"_resizeNodes\",value:function _resizeNodes(){this.canvas.setTransform();var ctx=this.canvas.getContext();ctx.save();ctx.translate(this.body.view.translation.x,this.body.view.translation.y);ctx.scale(this.body.view.scale,this.body.view.scale);var nodes=this.body.nodes;var node=void 0;for(var nodeId in nodes){if(nodes.hasOwnProperty(nodeId)){node=nodes[nodeId];node.resize(ctx);node.updateBoundingBox(ctx,node.selected)}}ctx.restore()}},{key:\"_drawNodes\",value:function _drawNodes(ctx){var alwaysShow=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var nodes=this.body.nodes;var nodeIndices=this.body.nodeIndices;var node=void 0;var selected=[];var margin=20;var topLeft=this.canvas.DOMtoCanvas({x:-margin,y:-margin});var bottomRight=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+margin,y:this.canvas.frame.canvas.clientHeight+margin});var viewableArea={top:topLeft.y,left:topLeft.x,bottom:bottomRight.y,right:bottomRight.x};for(var i=0;i<nodeIndices.length;i++){node=nodes[nodeIndices[i]];if(node.isSelected()){selected.push(nodeIndices[i])}else{if(alwaysShow===true){node.draw(ctx)}else if(node.isBoundingBoxOverlappingWith(viewableArea)===true){node.draw(ctx)}else{node.updateBoundingBox(ctx,node.selected)}}}for(var _i=0;_i<selected.length;_i++){node=nodes[selected[_i]];node.draw(ctx)}}},{key:\"_drawEdges\",value:function _drawEdges(ctx){var edges=this.body.edges;var edgeIndices=this.body.edgeIndices;var edge=void 0;for(var i=0;i<edgeIndices.length;i++){edge=edges[edgeIndices[i]];if(edge.connected===true){edge.draw(ctx)}}}},{key:\"_determineBrowserMethod\",value:function _determineBrowserMethod(){if(typeof window!==\"undefined\"){var browserType=navigator.userAgent.toLowerCase();this.requiresTimeout=false;if(browserType.indexOf(\"msie 9.0\")!=-1){this.requiresTimeout=true}else if(browserType.indexOf(\"safari\")!=-1){if(browserType.indexOf(\"chrome\")<=-1){this.requiresTimeout=true}}}else{this.requiresTimeout=true}}}]);return CanvasRenderer}();exports[\"default\"]=CanvasRenderer},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hammer=__webpack_require__(10);var hammerUtil=__webpack_require__(37);var util=__webpack_require__(2);var Canvas=function(){function Canvas(body){(0,_classCallCheck3[\"default\"])(this,Canvas);this.body=body;this.pixelRatio=1;this.resizeTimer=undefined;this.resizeFunction=this._onResize.bind(this);this.cameraState={};this.initialized=false;this.canvasViewCenter={};this.options={};this.defaultOptions={autoResize:true,height:\"100%\",width:\"100%\"};util.extend(this.options,this.defaultOptions);this.bindEventListeners()}(0,_createClass3[\"default\"])(Canvas,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this=this;this.body.emitter.once(\"resize\",function(obj){if(obj.width!==0){_this.body.view.translation.x=obj.width*.5}if(obj.height!==0){_this.body.view.translation.y=obj.height*.5}});this.body.emitter.on(\"setSize\",this.setSize.bind(this));this.body.emitter.on(\"destroy\",function(){_this.hammerFrame.destroy();_this.hammer.destroy();_this._cleanUp()})}},{key:\"setOptions\",value:function setOptions(options){var _this2=this;if(options!==undefined){var fields=[\"width\",\"height\",\"autoResize\"];util.selectiveDeepExtend(fields,this.options,options)}if(this.options.autoResize===true){this._cleanUp();this.resizeTimer=setInterval(function(){var changed=_this2.setSize();if(changed===true){_this2.body.emitter.emit(\"_requestRedraw\")}},1e3);this.resizeFunction=this._onResize.bind(this);util.addEventListener(window,\"resize\",this.resizeFunction)}}},{key:\"_cleanUp\",value:function _cleanUp(){if(this.resizeTimer!==undefined){clearInterval(this.resizeTimer)}util.removeEventListener(window,\"resize\",this.resizeFunction);this.resizeFunction=undefined}},{key:\"_onResize\",value:function _onResize(){this.setSize();this.body.emitter.emit(\"_redraw\")}},{key:\"_getCameraState\",value:function _getCameraState(){var pixelRatio=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.pixelRatio;if(this.initialized===true){this.cameraState.previousWidth=this.frame.canvas.width/pixelRatio;this.cameraState.previousHeight=this.frame.canvas.height/pixelRatio;this.cameraState.scale=this.body.view.scale;this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/pixelRatio,y:.5*this.frame.canvas.height/pixelRatio})}}},{key:\"_setCameraState\",value:function _setCameraState(){if(this.cameraState.scale!==undefined&&this.frame.canvas.clientWidth!==0&&this.frame.canvas.clientHeight!==0&&this.pixelRatio!==0&&this.cameraState.previousWidth>0){var widthRatio=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth;var heightRatio=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight;var newScale=this.cameraState.scale;if(widthRatio!=1&&heightRatio!=1){newScale=this.cameraState.scale*.5*(widthRatio+heightRatio)}else if(widthRatio!=1){newScale=this.cameraState.scale*widthRatio}else if(heightRatio!=1){newScale=this.cameraState.scale*heightRatio}this.body.view.scale=newScale;var currentViewCenter=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight});var distanceFromCenter={x:currentViewCenter.x-this.cameraState.position.x,y:currentViewCenter.y-this.cameraState.position.y};this.body.view.translation.x+=distanceFromCenter.x*this.body.view.scale;this.body.view.translation.y+=distanceFromCenter.y*this.body.view.scale}}},{key:\"_prepareValue\",value:function _prepareValue(value){if(typeof value===\"number\"){return value+\"px\"}else if(typeof value===\"string\"){if(value.indexOf(\"%\")!==-1||value.indexOf(\"px\")!==-1){return value}else if(value.indexOf(\"%\")===-1){return value+\"px\"}}throw new Error(\"Could not use the value supplied for width or height:\"+value)}},{key:\"_create\",value:function _create(){while(this.body.container.hasChildNodes()){this.body.container.removeChild(this.body.container.firstChild)}this.frame=document.createElement(\"div\");this.frame.className=\"vis-network\";this.frame.style.position=\"relative\";this.frame.style.overflow=\"hidden\";this.frame.tabIndex=900;this.frame.canvas=document.createElement(\"canvas\");this.frame.canvas.style.position=\"relative\";this.frame.appendChild(this.frame.canvas);if(!this.frame.canvas.getContext){var noCanvas=document.createElement(\"DIV\");noCanvas.style.color=\"red\";noCanvas.style.fontWeight=\"bold\";noCanvas.style.padding=\"10px\";noCanvas.innerHTML=\"Error: your browser does not support HTML canvas\";this.frame.canvas.appendChild(noCanvas)}else{this._setPixelRatio();this.setTransform()}this.body.container.appendChild(this.frame);this.body.view.scale=1;this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight};this._bindHammer()}},{key:\"_bindHammer\",value:function _bindHammer(){var _this3=this;if(this.hammer!==undefined){this.hammer.destroy()}this.drag={};this.pinch={};this.hammer=new Hammer(this.frame.canvas);this.hammer.get(\"pinch\").set({enable:true});this.hammer.get(\"pan\").set({threshold:5,direction:Hammer.DIRECTION_ALL});hammerUtil.onTouch(this.hammer,function(event){_this3.body.eventListeners.onTouch(event)});this.hammer.on(\"tap\",function(event){_this3.body.eventListeners.onTap(event)});this.hammer.on(\"doubletap\",function(event){_this3.body.eventListeners.onDoubleTap(event)});this.hammer.on(\"press\",function(event){_this3.body.eventListeners.onHold(event)});this.hammer.on(\"panstart\",function(event){_this3.body.eventListeners.onDragStart(event)});this.hammer.on(\"panmove\",function(event){_this3.body.eventListeners.onDrag(event)});this.hammer.on(\"panend\",function(event){_this3.body.eventListeners.onDragEnd(event)});this.hammer.on(\"pinch\",function(event){_this3.body.eventListeners.onPinch(event)});this.frame.canvas.addEventListener(\"mousewheel\",function(event){_this3.body.eventListeners.onMouseWheel(event)});this.frame.canvas.addEventListener(\"DOMMouseScroll\",function(event){_this3.body.eventListeners.onMouseWheel(event)});this.frame.canvas.addEventListener(\"mousemove\",function(event){_this3.body.eventListeners.onMouseMove(event)});this.frame.canvas.addEventListener(\"contextmenu\",function(event){_this3.body.eventListeners.onContext(event)});this.hammerFrame=new Hammer(this.frame);hammerUtil.onRelease(this.hammerFrame,function(event){_this3.body.eventListeners.onRelease(event)})}},{key:\"setSize\",value:function setSize(){var width=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.options.width;var height=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.options.height;width=this._prepareValue(width);height=this._prepareValue(height);var emitEvent=false;var oldWidth=this.frame.canvas.width;var oldHeight=this.frame.canvas.height;var previousRatio=this.pixelRatio;this._setPixelRatio();if(width!=this.options.width||height!=this.options.height||this.frame.style.width!=width||this.frame.style.height!=height){this._getCameraState(previousRatio);this.frame.style.width=width;this.frame.style.height=height;this.frame.canvas.style.width=\"100%\";this.frame.canvas.style.height=\"100%\";this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio);this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);this.options.width=width;this.options.height=height;this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight};emitEvent=true}else{var newWidth=Math.round(this.frame.canvas.clientWidth*this.pixelRatio);var newHeight=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);if(this.frame.canvas.width!==newWidth||this.frame.canvas.height!==newHeight){this._getCameraState(previousRatio)}if(this.frame.canvas.width!==newWidth){this.frame.canvas.width=newWidth;emitEvent=true}if(this.frame.canvas.height!==newHeight){this.frame.canvas.height=newHeight;emitEvent=true}}if(emitEvent===true){this.body.emitter.emit(\"resize\",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(oldWidth/this.pixelRatio),oldHeight:Math.round(oldHeight/this.pixelRatio)});this._setCameraState()}this.initialized=true;return emitEvent}},{key:\"getContext\",value:function getContext(){return this.frame.canvas.getContext(\"2d\")}},{key:\"_determinePixelRatio\",value:function _determinePixelRatio(){var ctx=this.getContext();if(ctx===undefined){throw new Error(\"Could not get canvax context\")}var numerator=1;if(typeof window!==\"undefined\"){numerator=window.devicePixelRatio||1}var denominator=ctx.webkitBackingStorePixelRatio||ctx.mozBackingStorePixelRatio||ctx.msBackingStorePixelRatio||ctx.oBackingStorePixelRatio||ctx.backingStorePixelRatio||1;return numerator/denominator}},{key:\"_setPixelRatio\",value:function _setPixelRatio(){this.pixelRatio=this._determinePixelRatio()}},{key:\"setTransform\",value:function setTransform(){var ctx=this.getContext();if(ctx===undefined){throw new Error(\"Could not get canvax context\")}ctx.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}},{key:\"_XconvertDOMtoCanvas\",value:function _XconvertDOMtoCanvas(x){return(x-this.body.view.translation.x)/this.body.view.scale}},{\nkey:\"_XconvertCanvasToDOM\",value:function _XconvertCanvasToDOM(x){return x*this.body.view.scale+this.body.view.translation.x}},{key:\"_YconvertDOMtoCanvas\",value:function _YconvertDOMtoCanvas(y){return(y-this.body.view.translation.y)/this.body.view.scale}},{key:\"_YconvertCanvasToDOM\",value:function _YconvertCanvasToDOM(y){return y*this.body.view.scale+this.body.view.translation.y}},{key:\"canvasToDOM\",value:function canvasToDOM(pos){return{x:this._XconvertCanvasToDOM(pos.x),y:this._YconvertCanvasToDOM(pos.y)}}},{key:\"DOMtoCanvas\",value:function DOMtoCanvas(pos){return{x:this._XconvertDOMtoCanvas(pos.x),y:this._YconvertDOMtoCanvas(pos.y)}}}]);return Canvas}();exports[\"default\"]=Canvas},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var NetworkUtil=__webpack_require__(76)[\"default\"];var View=function(){function View(body,canvas){var _this=this;(0,_classCallCheck3[\"default\"])(this,View);this.body=body;this.canvas=canvas;this.animationSpeed=1/this.renderRefreshRate;this.animationEasingFunction=\"easeInOutQuint\";this.easingTime=0;this.sourceScale=0;this.targetScale=0;this.sourceTranslation=0;this.targetTranslation=0;this.lockedOnNodeId=undefined;this.lockedOnNodeOffset=undefined;this.touchTime=0;this.viewFunction=undefined;this.body.emitter.on(\"fit\",this.fit.bind(this));this.body.emitter.on(\"animationFinished\",function(){_this.body.emitter.emit(\"_stopRendering\")});this.body.emitter.on(\"unlockNode\",this.releaseNode.bind(this))}(0,_createClass3[\"default\"])(View,[{key:\"setOptions\",value:function setOptions(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};this.options=options}},{key:\"fit\",value:function fit(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{nodes:[]};var initialZoom=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var range=void 0;var zoomLevel=void 0;if(options.nodes===undefined||options.nodes.length===0){options.nodes=this.body.nodeIndices}if(initialZoom===true){var positionDefined=0;for(var nodeId in this.body.nodes){if(this.body.nodes.hasOwnProperty(nodeId)){var node=this.body.nodes[nodeId];if(node.predefinedPosition===true){positionDefined+=1}}}if(positionDefined>.5*this.body.nodeIndices.length){this.fit(options,false);return}range=NetworkUtil.getRange(this.body.nodes,options.nodes);var numberOfNodes=this.body.nodeIndices.length;zoomLevel=12.662/(numberOfNodes+7.4147)+.0964822;var factor=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);zoomLevel*=factor}else{this.body.emitter.emit(\"_resizeNodes\");range=NetworkUtil.getRange(this.body.nodes,options.nodes);var xDistance=Math.abs(range.maxX-range.minX)*1.1;var yDistance=Math.abs(range.maxY-range.minY)*1.1;var xZoomLevel=this.canvas.frame.canvas.clientWidth/xDistance;var yZoomLevel=this.canvas.frame.canvas.clientHeight/yDistance;zoomLevel=xZoomLevel<=yZoomLevel?xZoomLevel:yZoomLevel}if(zoomLevel>1){zoomLevel=1}else if(zoomLevel===0){zoomLevel=1}var center=NetworkUtil.findCenter(range);var animationOptions={position:center,scale:zoomLevel,animation:options.animation};this.moveTo(animationOptions)}},{key:\"focus\",value:function focus(nodeId){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this.body.nodes[nodeId]!==undefined){var nodePosition={x:this.body.nodes[nodeId].x,y:this.body.nodes[nodeId].y};options.position=nodePosition;options.lockedOnNode=nodeId;this.moveTo(options)}else{console.log(\"Node: \"+nodeId+\" cannot be found.\")}}},{key:\"moveTo\",value:function moveTo(options){if(options===undefined){options={};return}if(options.offset===undefined){options.offset={x:0,y:0}}if(options.offset.x===undefined){options.offset.x=0}if(options.offset.y===undefined){options.offset.y=0}if(options.scale===undefined){options.scale=this.body.view.scale}if(options.position===undefined){options.position=this.getViewPosition()}if(options.animation===undefined){options.animation={duration:0}}if(options.animation===false){options.animation={duration:0}}if(options.animation===true){options.animation={}}if(options.animation.duration===undefined){options.animation.duration=1e3}if(options.animation.easingFunction===undefined){options.animation.easingFunction=\"easeInOutQuad\"}this.animateView(options)}},{key:\"animateView\",value:function animateView(options){if(options===undefined){return}this.animationEasingFunction=options.animation.easingFunction;this.releaseNode();if(options.locked===true){this.lockedOnNodeId=options.lockedOnNode;this.lockedOnNodeOffset=options.offset}if(this.easingTime!=0){this._transitionRedraw(true)}this.sourceScale=this.body.view.scale;this.sourceTranslation=this.body.view.translation;this.targetScale=options.scale;this.body.view.scale=this.targetScale;var viewCenter=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight});var distanceFromCenter={x:viewCenter.x-options.position.x,y:viewCenter.y-options.position.y};this.targetTranslation={x:this.sourceTranslation.x+distanceFromCenter.x*this.targetScale+options.offset.x,y:this.sourceTranslation.y+distanceFromCenter.y*this.targetScale+options.offset.y};if(options.animation.duration===0){if(this.lockedOnNodeId!=undefined){this.viewFunction=this._lockedRedraw.bind(this);this.body.emitter.on(\"initRedraw\",this.viewFunction)}else{this.body.view.scale=this.targetScale;this.body.view.translation=this.targetTranslation;this.body.emitter.emit(\"_requestRedraw\")}}else{this.animationSpeed=1/(60*options.animation.duration*.001)||1/60;this.animationEasingFunction=options.animation.easingFunction;this.viewFunction=this._transitionRedraw.bind(this);this.body.emitter.on(\"initRedraw\",this.viewFunction);this.body.emitter.emit(\"_startRendering\")}}},{key:\"_lockedRedraw\",value:function _lockedRedraw(){var nodePosition={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y};var viewCenter=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight});var distanceFromCenter={x:viewCenter.x-nodePosition.x,y:viewCenter.y-nodePosition.y};var sourceTranslation=this.body.view.translation;var targetTranslation={x:sourceTranslation.x+distanceFromCenter.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:sourceTranslation.y+distanceFromCenter.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=targetTranslation}},{key:\"releaseNode\",value:function releaseNode(){if(this.lockedOnNodeId!==undefined&&this.viewFunction!==undefined){this.body.emitter.off(\"initRedraw\",this.viewFunction);this.lockedOnNodeId=undefined;this.lockedOnNodeOffset=undefined}}},{key:\"_transitionRedraw\",value:function _transitionRedraw(){var finished=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;this.easingTime+=this.animationSpeed;this.easingTime=finished===true?1:this.easingTime;var progress=util.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*progress;this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*progress,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*progress};if(this.easingTime>=1){this.body.emitter.off(\"initRedraw\",this.viewFunction);this.easingTime=0;if(this.lockedOnNodeId!=undefined){this.viewFunction=this._lockedRedraw.bind(this);this.body.emitter.on(\"initRedraw\",this.viewFunction)}this.body.emitter.emit(\"animationFinished\")}}},{key:\"getScale\",value:function getScale(){return this.body.view.scale}},{key:\"getViewPosition\",value:function getViewPosition(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]);return View}();exports[\"default\"]=View},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var NavigationHandler=__webpack_require__(233)[\"default\"];var Popup=__webpack_require__(104)[\"default\"];var InteractionHandler=function(){function InteractionHandler(body,canvas,selectionHandler){(0,_classCallCheck3[\"default\"])(this,InteractionHandler);this.body=body;this.canvas=canvas;this.selectionHandler=selectionHandler;this.navigationHandler=new NavigationHandler(body,canvas);this.body.eventListeners.onTap=this.onTap.bind(this);this.body.eventListeners.onTouch=this.onTouch.bind(this);this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this);this.body.eventListeners.onHold=this.onHold.bind(this);this.body.eventListeners.onDragStart=this.onDragStart.bind(this);this.body.eventListeners.onDrag=this.onDrag.bind(this);this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this);this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this);this.body.eventListeners.onPinch=this.onPinch.bind(this);this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this);this.body.eventListeners.onRelease=this.onRelease.bind(this);this.body.eventListeners.onContext=this.onContext.bind(this);this.touchTime=0;this.drag={};this.pinch={};this.popup=undefined;this.popupObj=undefined;this.popupTimer=undefined;this.body.functions.getPointer=this.getPointer.bind(this);this.options={};this.defaultOptions={dragNodes:true,dragView:true,hover:false,keyboard:{enabled:false,speed:{x:10,y:10,zoom:.02},bindToWindow:true},navigationButtons:false,tooltipDelay:300,zoomView:true};util.extend(this.options,this.defaultOptions);this.bindEventListeners()}(0,_createClass3[\"default\"])(InteractionHandler,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this=this;this.body.emitter.on(\"destroy\",function(){clearTimeout(_this.popupTimer);delete _this.body.functions.getPointer})}},{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){var fields=[\"hideEdgesOnDrag\",\"hideNodesOnDrag\",\"keyboard\",\"multiselect\",\"selectable\",\"selectConnectedEdges\"];util.selectiveNotDeepExtend(fields,this.options,options);util.mergeOptions(this.options,options,\"keyboard\");if(options.tooltip){util.extend(this.options.tooltip,options.tooltip);if(options.tooltip.color){this.options.tooltip.color=util.parseColor(options.tooltip.color)}}}this.navigationHandler.setOptions(this.options)}},{key:\"getPointer\",value:function getPointer(touch){return{x:touch.x-util.getAbsoluteLeft(this.canvas.frame.canvas),y:touch.y-util.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:\"onTouch\",value:function onTouch(event){if((new Date).valueOf()-this.touchTime>50){this.drag.pointer=this.getPointer(event.center);this.drag.pinched=false;this.pinch.scale=this.body.view.scale;this.touchTime=(new Date).valueOf()}}},{key:\"onTap\",value:function onTap(event){var pointer=this.getPointer(event.center);var multiselect=this.selectionHandler.options.multiselect&&(event.changedPointers[0].ctrlKey||event.changedPointers[0].metaKey);this.checkSelectionChanges(pointer,event,multiselect);this.selectionHandler._generateClickEvent(\"click\",event,pointer)}},{key:\"onDoubleTap\",value:function onDoubleTap(event){var pointer=this.getPointer(event.center);this.selectionHandler._generateClickEvent(\"doubleClick\",event,pointer)}},{key:\"onHold\",value:function onHold(event){var pointer=this.getPointer(event.center);var multiselect=this.selectionHandler.options.multiselect;this.checkSelectionChanges(pointer,event,multiselect);this.selectionHandler._generateClickEvent(\"click\",event,pointer);this.selectionHandler._generateClickEvent(\"hold\",event,pointer)}},{key:\"onRelease\",value:function onRelease(event){if((new Date).valueOf()-this.touchTime>10){var pointer=this.getPointer(event.center);this.selectionHandler._generateClickEvent(\"release\",event,pointer);this.touchTime=(new Date).valueOf()}}},{key:\"onContext\",value:function onContext(event){var pointer=this.getPointer({x:event.clientX,y:event.clientY});this.selectionHandler._generateClickEvent(\"oncontext\",event,pointer)}},{key:\"checkSelectionChanges\",value:function checkSelectionChanges(pointer,event){var add=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var previousSelection=this.selectionHandler.getSelection();var selected=false;if(add===true){selected=this.selectionHandler.selectAdditionalOnPoint(pointer)}else{selected=this.selectionHandler.selectOnPoint(pointer)}var currentSelection=this.selectionHandler.getSelection();var deselectedItems=this._determineDifference(previousSelection,currentSelection);var selectedItems=this._determineDifference(currentSelection,previousSelection);if(deselectedItems.edges.length>0){this.selectionHandler._generateClickEvent(\"deselectEdge\",event,pointer,previousSelection);selected=true}if(deselectedItems.nodes.length>0){this.selectionHandler._generateClickEvent(\"deselectNode\",event,pointer,previousSelection);selected=true}if(selectedItems.nodes.length>0){this.selectionHandler._generateClickEvent(\"selectNode\",event,pointer);selected=true}if(selectedItems.edges.length>0){this.selectionHandler._generateClickEvent(\"selectEdge\",event,pointer);selected=true}if(selected===true){this.selectionHandler._generateClickEvent(\"select\",event,pointer)}}},{key:\"_determineDifference\",value:function _determineDifference(firstSet,secondSet){var arrayDiff=function arrayDiff(firstArr,secondArr){var result=[];for(var i=0;i<firstArr.length;i++){var value=firstArr[i];if(secondArr.indexOf(value)===-1){result.push(value)}}return result};return{nodes:arrayDiff(firstSet.nodes,secondSet.nodes),edges:arrayDiff(firstSet.edges,secondSet.edges)}}},{key:\"onDragStart\",value:function onDragStart(event){if(this.drag.pointer===undefined){this.onTouch(event)}var node=this.selectionHandler.getNodeAt(this.drag.pointer);this.drag.dragging=true;this.drag.selection=[];this.drag.translation=util.extend({},this.body.view.translation);this.drag.nodeId=undefined;if(node!==undefined&&this.options.dragNodes===true){this.drag.nodeId=node.id;if(node.isSelected()===false){this.selectionHandler.unselectAll();this.selectionHandler.selectObject(node)}this.selectionHandler._generateClickEvent(\"dragStart\",event,this.drag.pointer);var selection=this.selectionHandler.selectionObj.nodes;for(var nodeId in selection){if(selection.hasOwnProperty(nodeId)){var object=selection[nodeId];var s={id:object.id,node:object,x:object.x,y:object.y,xFixed:object.options.fixed.x,yFixed:object.options.fixed.y};object.options.fixed.x=true;object.options.fixed.y=true;this.drag.selection.push(s)}}}else{this.selectionHandler._generateClickEvent(\"dragStart\",event,this.drag.pointer,undefined,true)}}},{key:\"onDrag\",value:function onDrag(event){var _this2=this;if(this.drag.pinched===true){return}this.body.emitter.emit(\"unlockNode\");var pointer=this.getPointer(event.center);var selection=this.drag.selection;if(selection&&selection.length&&this.options.dragNodes===true){this.selectionHandler._generateClickEvent(\"dragging\",event,pointer);var deltaX=pointer.x-this.drag.pointer.x;var deltaY=pointer.y-this.drag.pointer.y;selection.forEach(function(selection){var node=selection.node;if(selection.xFixed===false){node.x=_this2.canvas._XconvertDOMtoCanvas(_this2.canvas._XconvertCanvasToDOM(selection.x)+deltaX)}if(selection.yFixed===false){node.y=_this2.canvas._YconvertDOMtoCanvas(_this2.canvas._YconvertCanvasToDOM(selection.y)+deltaY)}});this.body.emitter.emit(\"startSimulation\")}else{if(this.options.dragView===true){this.selectionHandler._generateClickEvent(\"dragging\",event,pointer,undefined,true);if(this.drag.pointer===undefined){this.onDragStart(event);return}var diffX=pointer.x-this.drag.pointer.x;var diffY=pointer.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+diffX,y:this.drag.translation.y+diffY};this.body.emitter.emit(\"_requestRedraw\")}}}},{key:\"onDragEnd\",value:function onDragEnd(event){this.drag.dragging=false;var selection=this.drag.selection;if(selection&&selection.length){selection.forEach(function(s){s.node.options.fixed.x=s.xFixed;s.node.options.fixed.y=s.yFixed});this.selectionHandler._generateClickEvent(\"dragEnd\",event,this.getPointer(event.center));this.body.emitter.emit(\"startSimulation\")}else{this.selectionHandler._generateClickEvent(\"dragEnd\",event,this.getPointer(event.center),undefined,true);this.body.emitter.emit(\"_requestRedraw\")}}},{key:\"onPinch\",value:function onPinch(event){var pointer=this.getPointer(event.center);this.drag.pinched=true;if(this.pinch[\"scale\"]===undefined){this.pinch.scale=1}var scale=this.pinch.scale*event.scale;this.zoom(scale,pointer)}},{key:\"zoom\",value:function zoom(scale,pointer){if(this.options.zoomView===true){var scaleOld=this.body.view.scale;if(scale<1e-5){scale=1e-5}if(scale>10){scale=10}var preScaleDragPointer=undefined;if(this.drag!==undefined){if(this.drag.dragging===true){preScaleDragPointer=this.canvas.DOMtoCanvas(this.drag.pointer)}}var translation=this.body.view.translation;var scaleFrac=scale/scaleOld;var tx=(1-scaleFrac)*pointer.x+translation.x*scaleFrac;var ty=(1-scaleFrac)*pointer.y+translation.y*scaleFrac;this.body.view.scale=scale;this.body.view.translation={x:tx,y:ty};if(preScaleDragPointer!=undefined){var postScaleDragPointer=this.canvas.canvasToDOM(preScaleDragPointer);this.drag.pointer.x=postScaleDragPointer.x;this.drag.pointer.y=postScaleDragPointer.y}this.body.emitter.emit(\"_requestRedraw\");if(scaleOld<scale){this.body.emitter.emit(\"zoom\",{direction:\"+\",scale:this.body.view.scale,pointer:pointer})}else{this.body.emitter.emit(\"zoom\",{direction:\"-\",scale:this.body.view.scale,pointer:pointer})}}}},{key:\"onMouseWheel\",value:function onMouseWheel(event){if(this.options.zoomView===true){var delta=0;if(event.wheelDelta){delta=event.wheelDelta/120}else if(event.detail){delta=-event.detail/3}if(delta!==0){var scale=this.body.view.scale;var zoom=delta/10;if(delta<0){zoom=zoom/(1-zoom)}scale*=1+zoom;var pointer=this.getPointer({x:event.clientX,y:event.clientY});this.zoom(scale,pointer)}event.preventDefault()}}},{key:\"onMouseMove\",value:function onMouseMove(event){var _this3=this;var pointer=this.getPointer({x:event.clientX,y:event.clientY});var popupVisible=false;if(this.popup!==undefined){if(this.popup.hidden===false){this._checkHidePopup(pointer)}if(this.popup.hidden===false){popupVisible=true;this.popup.setPosition(pointer.x+3,pointer.y-5);this.popup.show()}}if(this.options.keyboard.bindToWindow===false&&this.options.keyboard.enabled===true){this.canvas.frame.focus()}if(popupVisible===false){if(this.popupTimer!==undefined){clearInterval(this.popupTimer);this.popupTimer=undefined}if(!this.drag.dragging){this.popupTimer=setTimeout(function(){return _this3._checkShowPopup(pointer)},this.options.tooltipDelay)}}if(this.options.hover===true){this.selectionHandler.hoverObject(event,pointer)}}},{key:\"_checkShowPopup\",value:function _checkShowPopup(pointer){var x=this.canvas._XconvertDOMtoCanvas(pointer.x);var y=this.canvas._YconvertDOMtoCanvas(pointer.y);var pointerObj={left:x,top:y,right:x,bottom:y};var previousPopupObjId=this.popupObj===undefined?undefined:this.popupObj.id;var nodeUnderCursor=false;var popupType=\"node\";if(this.popupObj===undefined){var nodeIndices=this.body.nodeIndices;var nodes=this.body.nodes;var node=void 0;var overlappingNodes=[];for(var i=0;i<nodeIndices.length;i++){node=nodes[nodeIndices[i]];if(node.isOverlappingWith(pointerObj)===true){if(node.getTitle()!==undefined){overlappingNodes.push(nodeIndices[i])}}}if(overlappingNodes.length>0){this.popupObj=nodes[overlappingNodes[overlappingNodes.length-1]];nodeUnderCursor=true}}if(this.popupObj===undefined&&nodeUnderCursor===false){var edgeIndices=this.body.edgeIndices;var edges=this.body.edges;var edge=void 0;var overlappingEdges=[];for(var _i=0;_i<edgeIndices.length;_i++){edge=edges[edgeIndices[_i]];if(edge.isOverlappingWith(pointerObj)===true){if(edge.connected===true&&edge.getTitle()!==undefined){overlappingEdges.push(edgeIndices[_i])}}}if(overlappingEdges.length>0){this.popupObj=edges[overlappingEdges[overlappingEdges.length-1]];popupType=\"edge\"}}if(this.popupObj!==undefined){if(this.popupObj.id!==previousPopupObjId){if(this.popup===undefined){this.popup=new Popup(this.canvas.frame)}this.popup.popupTargetType=popupType;this.popup.popupTargetId=this.popupObj.id;this.popup.setPosition(pointer.x+3,pointer.y-5);this.popup.setText(this.popupObj.getTitle());this.popup.show();this.body.emitter.emit(\"showPopup\",this.popupObj.id)}}else{if(this.popup!==undefined){this.popup.hide();this.body.emitter.emit(\"hidePopup\")}}}},{key:\"_checkHidePopup\",value:function _checkHidePopup(pointer){var pointerObj=this.selectionHandler._pointerToPositionObject(pointer);var stillOnObj=false;if(this.popup.popupTargetType===\"node\"){if(this.body.nodes[this.popup.popupTargetId]!==undefined){stillOnObj=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(pointerObj);if(stillOnObj===true){var overNode=this.selectionHandler.getNodeAt(pointer);stillOnObj=overNode===undefined?false:overNode.id===this.popup.popupTargetId}}}else{if(this.selectionHandler.getNodeAt(pointer)===undefined){if(this.body.edges[this.popup.popupTargetId]!==undefined){stillOnObj=this.body.edges[this.popup.popupTargetId].isOverlappingWith(pointerObj)}}}if(stillOnObj===false){this.popupObj=undefined;this.popup.hide();this.body.emitter.emit(\"hidePopup\")}}}]);return InteractionHandler}();exports[\"default\"]=InteractionHandler},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hammer=__webpack_require__(10);var hammerUtil=__webpack_require__(37);var keycharm=__webpack_require__(35);var NavigationHandler=function(){function NavigationHandler(body,canvas){var _this=this;(0,_classCallCheck3[\"default\"])(this,NavigationHandler);this.body=body;this.canvas=canvas;this.iconsCreated=false;this.navigationHammers=[];this.boundFunctions={};this.touchTime=0;this.activated=false;this.body.emitter.on(\"activate\",function(){_this.activated=true;_this.configureKeyboardBindings()});this.body.emitter.on(\"deactivate\",function(){_this.activated=false;_this.configureKeyboardBindings()});this.body.emitter.on(\"destroy\",function(){if(_this.keycharm!==undefined){_this.keycharm.destroy()}});this.options={}}(0,_createClass3[\"default\"])(NavigationHandler,[{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){this.options=options;this.create()}}},{key:\"create\",value:function create(){if(this.options.navigationButtons===true){if(this.iconsCreated===false){this.loadNavigationElements()}}else if(this.iconsCreated===true){this.cleanNavigation()}this.configureKeyboardBindings()}},{key:\"cleanNavigation\",value:function cleanNavigation(){if(this.navigationHammers.length!=0){for(var i=0;i<this.navigationHammers.length;i++){this.navigationHammers[i].destroy()}this.navigationHammers=[]}if(this.navigationDOM&&this.navigationDOM[\"wrapper\"]&&this.navigationDOM[\"wrapper\"].parentNode){this.navigationDOM[\"wrapper\"].parentNode.removeChild(this.navigationDOM[\"wrapper\"])}this.iconsCreated=false}},{key:\"loadNavigationElements\",value:function loadNavigationElements(){var _this2=this;this.cleanNavigation();this.navigationDOM={};var navigationDivs=[\"up\",\"down\",\"left\",\"right\",\"zoomIn\",\"zoomOut\",\"zoomExtends\"];var navigationDivActions=[\"_moveUp\",\"_moveDown\",\"_moveLeft\",\"_moveRight\",\"_zoomIn\",\"_zoomOut\",\"_fit\"];this.navigationDOM[\"wrapper\"]=document.createElement(\"div\");this.navigationDOM[\"wrapper\"].className=\"vis-navigation\";this.canvas.frame.appendChild(this.navigationDOM[\"wrapper\"]);for(var i=0;i<navigationDivs.length;i++){this.navigationDOM[navigationDivs[i]]=document.createElement(\"div\");this.navigationDOM[navigationDivs[i]].className=\"vis-button vis-\"+navigationDivs[i];this.navigationDOM[\"wrapper\"].appendChild(this.navigationDOM[navigationDivs[i]]);var hammer=new Hammer(this.navigationDOM[navigationDivs[i]]);if(navigationDivActions[i]===\"_fit\"){hammerUtil.onTouch(hammer,this._fit.bind(this))}else{hammerUtil.onTouch(hammer,this.bindToRedraw.bind(this,navigationDivActions[i]))}this.navigationHammers.push(hammer)}var hammerFrame=new Hammer(this.canvas.frame);hammerUtil.onRelease(hammerFrame,function(){_this2._stopMovement()});this.navigationHammers.push(hammerFrame);this.iconsCreated=true}},{key:\"bindToRedraw\",value:function bindToRedraw(action){if(this.boundFunctions[action]===undefined){this.boundFunctions[action]=this[action].bind(this);this.body.emitter.on(\"initRedraw\",this.boundFunctions[action]);this.body.emitter.emit(\"_startRendering\")}}},{key:\"unbindFromRedraw\",value:function unbindFromRedraw(action){if(this.boundFunctions[action]!==undefined){this.body.emitter.off(\"initRedraw\",this.boundFunctions[action]);this.body.emitter.emit(\"_stopRendering\");delete this.boundFunctions[action]}}},{key:\"_fit\",value:function _fit(){if((new Date).valueOf()-this.touchTime>700){this.body.emitter.emit(\"fit\",{duration:700});this.touchTime=(new Date).valueOf()}}},{key:\"_stopMovement\",value:function _stopMovement(){for(var boundAction in this.boundFunctions){if(this.boundFunctions.hasOwnProperty(boundAction)){this.body.emitter.off(\"initRedraw\",this.boundFunctions[boundAction]);this.body.emitter.emit(\"_stopRendering\")}}this.boundFunctions={}}},{key:\"_moveUp\",value:function _moveUp(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:\"_moveDown\",value:function _moveDown(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:\"_moveLeft\",value:function _moveLeft(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:\"_moveRight\",value:function _moveRight(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:\"_zoomIn\",value:function _zoomIn(){var scaleOld=this.body.view.scale;var scale=this.body.view.scale*(1+this.options.keyboard.speed.zoom);var translation=this.body.view.translation;var scaleFrac=scale/scaleOld;var tx=(1-scaleFrac)*this.canvas.canvasViewCenter.x+translation.x*scaleFrac;var ty=(1-scaleFrac)*this.canvas.canvasViewCenter.y+translation.y*scaleFrac;this.body.view.scale=scale;this.body.view.translation={x:tx,y:ty};this.body.emitter.emit(\"zoom\",{direction:\"+\",scale:this.body.view.scale,pointer:null})}},{key:\"_zoomOut\",value:function _zoomOut(){var scaleOld=this.body.view.scale;var scale=this.body.view.scale/(1+this.options.keyboard.speed.zoom);var translation=this.body.view.translation;var scaleFrac=scale/scaleOld;var tx=(1-scaleFrac)*this.canvas.canvasViewCenter.x+translation.x*scaleFrac;var ty=(1-scaleFrac)*this.canvas.canvasViewCenter.y+translation.y*scaleFrac;this.body.view.scale=scale;this.body.view.translation={x:tx,y:ty};this.body.emitter.emit(\"zoom\",{direction:\"-\",scale:this.body.view.scale,pointer:null})}},{key:\"configureKeyboardBindings\",value:function configureKeyboardBindings(){var _this3=this;if(this.keycharm!==undefined){this.keycharm.destroy()}if(this.options.keyboard.enabled===true){if(this.options.keyboard.bindToWindow===true){this.keycharm=keycharm({container:window,preventDefault:true})}else{this.keycharm=keycharm({container:this.canvas.frame,preventDefault:true})}this.keycharm.reset();if(this.activated===true){this.keycharm.bind(\"up\",function(){_this3.bindToRedraw(\"_moveUp\")},\"keydown\");this.keycharm.bind(\"down\",function(){_this3.bindToRedraw(\"_moveDown\")},\"keydown\");this.keycharm.bind(\"left\",function(){_this3.bindToRedraw(\"_moveLeft\")},\"keydown\");this.keycharm.bind(\"right\",function(){_this3.bindToRedraw(\"_moveRight\")},\"keydown\");this.keycharm.bind(\"=\",function(){_this3.bindToRedraw(\"_zoomIn\")},\"keydown\");this.keycharm.bind(\"num+\",function(){_this3.bindToRedraw(\"_zoomIn\")},\"keydown\");this.keycharm.bind(\"num-\",function(){_this3.bindToRedraw(\"_zoomOut\")},\"keydown\");this.keycharm.bind(\"-\",function(){_this3.bindToRedraw(\"_zoomOut\")},\"keydown\");this.keycharm.bind(\"[\",function(){_this3.bindToRedraw(\"_zoomOut\")},\"keydown\");this.keycharm.bind(\"]\",function(){_this3.bindToRedraw(\"_zoomIn\")},\"keydown\");this.keycharm.bind(\"pageup\",function(){_this3.bindToRedraw(\"_zoomIn\")},\"keydown\");this.keycharm.bind(\"pagedown\",function(){_this3.bindToRedraw(\"_zoomOut\")},\"keydown\");this.keycharm.bind(\"up\",function(){_this3.unbindFromRedraw(\"_moveUp\")},\"keyup\");this.keycharm.bind(\"down\",function(){_this3.unbindFromRedraw(\"_moveDown\")},\"keyup\");this.keycharm.bind(\"left\",function(){_this3.unbindFromRedraw(\"_moveLeft\")},\"keyup\");this.keycharm.bind(\"right\",function(){_this3.unbindFromRedraw(\"_moveRight\")},\"keyup\");this.keycharm.bind(\"=\",function(){_this3.unbindFromRedraw(\"_zoomIn\")},\"keyup\");this.keycharm.bind(\"num+\",function(){_this3.unbindFromRedraw(\"_zoomIn\")},\"keyup\");this.keycharm.bind(\"num-\",function(){_this3.unbindFromRedraw(\"_zoomOut\")},\"keyup\");this.keycharm.bind(\"-\",function(){_this3.unbindFromRedraw(\"_zoomOut\")},\"keyup\");this.keycharm.bind(\"[\",function(){_this3.unbindFromRedraw(\"_zoomOut\")},\"keyup\");this.keycharm.bind(\"]\",function(){_this3.unbindFromRedraw(\"_zoomIn\")},\"keyup\");this.keycharm.bind(\"pageup\",function(){_this3.unbindFromRedraw(\"_zoomIn\")},\"keyup\");this.keycharm.bind(\"pagedown\",function(){_this3.unbindFromRedraw(\"_zoomOut\")},\"keyup\")}}}}]);return NavigationHandler}();exports[\"default\"]=NavigationHandler},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Node=__webpack_require__(47)[\"default\"];var Edge=__webpack_require__(74)[\"default\"];var util=__webpack_require__(2);var SelectionHandler=function(){function SelectionHandler(body,canvas){var _this=this;(0,_classCallCheck3[\"default\"])(this,SelectionHandler);this.body=body;this.canvas=canvas;this.selectionObj={nodes:[],edges:[]};this.hoverObj={nodes:{},edges:{}};this.options={};this.defaultOptions={multiselect:false,selectable:true,selectConnectedEdges:true,hoverConnectedEdges:true};util.extend(this.options,this.defaultOptions);this.body.emitter.on(\"_dataChanged\",function(){_this.updateSelection()})}(0,_createClass3[\"default\"])(SelectionHandler,[{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){var fields=[\"multiselect\",\"hoverConnectedEdges\",\"selectable\",\"selectConnectedEdges\"];util.selectiveDeepExtend(fields,this.options,options)}}},{key:\"selectOnPoint\",value:function selectOnPoint(pointer){var selected=false;if(this.options.selectable===true){var obj=this.getNodeAt(pointer)||this.getEdgeAt(pointer);this.unselectAll();if(obj!==undefined){selected=this.selectObject(obj)}this.body.emitter.emit(\"_requestRedraw\")}return selected}},{key:\"selectAdditionalOnPoint\",value:function selectAdditionalOnPoint(pointer){var selectionChanged=false;if(this.options.selectable===true){var obj=this.getNodeAt(pointer)||this.getEdgeAt(pointer);if(obj!==undefined){selectionChanged=true;if(obj.isSelected()===true){this.deselectObject(obj)}else{this.selectObject(obj)}this.body.emitter.emit(\"_requestRedraw\")}}return selectionChanged}},{key:\"_initBaseEvent\",value:function _initBaseEvent(event,pointer){var properties={};properties[\"pointer\"]={DOM:{\nx:pointer.x,y:pointer.y},canvas:this.canvas.DOMtoCanvas(pointer)};properties[\"event\"]=event;return properties}},{key:\"_generateClickEvent\",value:function _generateClickEvent(eventType,event,pointer,oldSelection){var emptySelection=arguments.length>4&&arguments[4]!==undefined?arguments[4]:false;var properties=this._initBaseEvent(event,pointer);if(emptySelection===true){properties.nodes=[];properties.edges=[]}else{var tmp=this.getSelection();properties.nodes=tmp.nodes;properties.edges=tmp.edges}if(oldSelection!==undefined){properties[\"previousSelection\"]=oldSelection}if(eventType==\"click\"){properties.items=this.getClickedItems(pointer)}this.body.emitter.emit(eventType,properties)}},{key:\"selectObject\",value:function selectObject(obj){var highlightEdges=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.options.selectConnectedEdges;if(obj!==undefined){if(obj instanceof Node){if(highlightEdges===true){this._selectConnectedEdges(obj)}}obj.select();this._addToSelection(obj);return true}return false}},{key:\"deselectObject\",value:function deselectObject(obj){if(obj.isSelected()===true){obj.selected=false;this._removeFromSelection(obj)}}},{key:\"_getAllNodesOverlappingWith\",value:function _getAllNodesOverlappingWith(object){var overlappingNodes=[];var nodes=this.body.nodes;for(var i=0;i<this.body.nodeIndices.length;i++){var nodeId=this.body.nodeIndices[i];if(nodes[nodeId].isOverlappingWith(object)){overlappingNodes.push(nodeId)}}return overlappingNodes}},{key:\"_pointerToPositionObject\",value:function _pointerToPositionObject(pointer){var canvasPos=this.canvas.DOMtoCanvas(pointer);return{left:canvasPos.x-1,top:canvasPos.y+1,right:canvasPos.x+1,bottom:canvasPos.y-1}}},{key:\"getNodeAt\",value:function getNodeAt(pointer){var returnNode=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var positionObject=this._pointerToPositionObject(pointer);var overlappingNodes=this._getAllNodesOverlappingWith(positionObject);if(overlappingNodes.length>0){if(returnNode===true){return this.body.nodes[overlappingNodes[overlappingNodes.length-1]]}else{return overlappingNodes[overlappingNodes.length-1]}}else{return undefined}}},{key:\"_getEdgesOverlappingWith\",value:function _getEdgesOverlappingWith(object,overlappingEdges){var edges=this.body.edges;for(var i=0;i<this.body.edgeIndices.length;i++){var edgeId=this.body.edgeIndices[i];if(edges[edgeId].isOverlappingWith(object)){overlappingEdges.push(edgeId)}}}},{key:\"_getAllEdgesOverlappingWith\",value:function _getAllEdgesOverlappingWith(object){var overlappingEdges=[];this._getEdgesOverlappingWith(object,overlappingEdges);return overlappingEdges}},{key:\"getEdgeAt\",value:function getEdgeAt(pointer){var returnEdge=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var canvasPos=this.canvas.DOMtoCanvas(pointer);var mindist=10;var overlappingEdge=null;var edges=this.body.edges;for(var i=0;i<this.body.edgeIndices.length;i++){var edgeId=this.body.edgeIndices[i];var edge=edges[edgeId];if(edge.connected){var xFrom=edge.from.x;var yFrom=edge.from.y;var xTo=edge.to.x;var yTo=edge.to.y;var dist=edge.edgeType.getDistanceToEdge(xFrom,yFrom,xTo,yTo,canvasPos.x,canvasPos.y);if(dist<mindist){overlappingEdge=edgeId;mindist=dist}}}if(overlappingEdge!==null){if(returnEdge===true){return this.body.edges[overlappingEdge]}else{return overlappingEdge}}else{return undefined}}},{key:\"_addToSelection\",value:function _addToSelection(obj){if(obj instanceof Node){this.selectionObj.nodes[obj.id]=obj}else{this.selectionObj.edges[obj.id]=obj}}},{key:\"_addToHover\",value:function _addToHover(obj){if(obj instanceof Node){this.hoverObj.nodes[obj.id]=obj}else{this.hoverObj.edges[obj.id]=obj}}},{key:\"_removeFromSelection\",value:function _removeFromSelection(obj){if(obj instanceof Node){delete this.selectionObj.nodes[obj.id];this._unselectConnectedEdges(obj)}else{delete this.selectionObj.edges[obj.id]}}},{key:\"unselectAll\",value:function unselectAll(){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){this.selectionObj.nodes[nodeId].unselect()}}for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){this.selectionObj.edges[edgeId].unselect()}}this.selectionObj={nodes:{},edges:{}}}},{key:\"_getSelectedNodeCount\",value:function _getSelectedNodeCount(){var count=0;for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){count+=1}}return count}},{key:\"_getSelectedNode\",value:function _getSelectedNode(){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){return this.selectionObj.nodes[nodeId]}}return undefined}},{key:\"_getSelectedEdge\",value:function _getSelectedEdge(){for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){return this.selectionObj.edges[edgeId]}}return undefined}},{key:\"_getSelectedEdgeCount\",value:function _getSelectedEdgeCount(){var count=0;for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){count+=1}}return count}},{key:\"_getSelectedObjectCount\",value:function _getSelectedObjectCount(){var count=0;for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){count+=1}}for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){count+=1}}return count}},{key:\"_selectionIsEmpty\",value:function _selectionIsEmpty(){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){return false}}for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){return false}}return true}},{key:\"_clusterInSelection\",value:function _clusterInSelection(){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){if(this.selectionObj.nodes[nodeId].clusterSize>1){return true}}}return false}},{key:\"_selectConnectedEdges\",value:function _selectConnectedEdges(node){for(var i=0;i<node.edges.length;i++){var edge=node.edges[i];edge.select();this._addToSelection(edge)}}},{key:\"_hoverConnectedEdges\",value:function _hoverConnectedEdges(node){for(var i=0;i<node.edges.length;i++){var edge=node.edges[i];edge.hover=true;this._addToHover(edge)}}},{key:\"_unselectConnectedEdges\",value:function _unselectConnectedEdges(node){for(var i=0;i<node.edges.length;i++){var edge=node.edges[i];edge.unselect();this._removeFromSelection(edge)}}},{key:\"emitBlurEvent\",value:function emitBlurEvent(event,pointer,object){var properties=this._initBaseEvent(event,pointer);if(object.hover===true){object.hover=false;if(object instanceof Node){properties.node=object.id;this.body.emitter.emit(\"blurNode\",properties)}else{properties.edge=object.id;this.body.emitter.emit(\"blurEdge\",properties)}}}},{key:\"emitHoverEvent\",value:function emitHoverEvent(event,pointer,object){var properties=this._initBaseEvent(event,pointer);var hoverChanged=false;if(object.hover===false){object.hover=true;this._addToHover(object);hoverChanged=true;if(object instanceof Node){properties.node=object.id;this.body.emitter.emit(\"hoverNode\",properties)}else{properties.edge=object.id;this.body.emitter.emit(\"hoverEdge\",properties)}}return hoverChanged}},{key:\"hoverObject\",value:function hoverObject(event,pointer){var object=this.getNodeAt(pointer);if(object===undefined){object=this.getEdgeAt(pointer)}var hoverChanged=false;for(var nodeId in this.hoverObj.nodes){if(this.hoverObj.nodes.hasOwnProperty(nodeId)){if(object===undefined||object instanceof Node&&object.id!=nodeId||object instanceof Edge){this.emitBlurEvent(event,pointer,this.hoverObj.nodes[nodeId]);delete this.hoverObj.nodes[nodeId];hoverChanged=true}}}for(var edgeId in this.hoverObj.edges){if(this.hoverObj.edges.hasOwnProperty(edgeId)){if(hoverChanged===true){this.hoverObj.edges[edgeId].hover=false;delete this.hoverObj.edges[edgeId]}else if(object===undefined||object instanceof Edge&&object.id!=edgeId||object instanceof Node&&!object.hover){this.emitBlurEvent(event,pointer,this.hoverObj.edges[edgeId]);delete this.hoverObj.edges[edgeId];hoverChanged=true}}}if(object!==undefined){hoverChanged=hoverChanged||this.emitHoverEvent(event,pointer,object);if(object instanceof Node&&this.options.hoverConnectedEdges===true){this._hoverConnectedEdges(object)}}if(hoverChanged===true){this.body.emitter.emit(\"_requestRedraw\")}}},{key:\"getSelection\",value:function getSelection(){var nodeIds=this.getSelectedNodes();var edgeIds=this.getSelectedEdges();return{nodes:nodeIds,edges:edgeIds}}},{key:\"getSelectedNodes\",value:function getSelectedNodes(){var idArray=[];if(this.options.selectable===true){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){idArray.push(this.selectionObj.nodes[nodeId].id)}}}return idArray}},{key:\"getSelectedEdges\",value:function getSelectedEdges(){var idArray=[];if(this.options.selectable===true){for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){idArray.push(this.selectionObj.edges[edgeId].id)}}}return idArray}},{key:\"setSelection\",value:function setSelection(selection){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var i=void 0,id=void 0;if(!selection||!selection.nodes&&!selection.edges)throw\"Selection must be an object with nodes and/or edges properties\";if(options.unselectAll||options.unselectAll===undefined){this.unselectAll()}if(selection.nodes){for(i=0;i<selection.nodes.length;i++){id=selection.nodes[i];var node=this.body.nodes[id];if(!node){throw new RangeError('Node with id \"'+id+'\" not found')}this.selectObject(node,options.highlightEdges)}}if(selection.edges){for(i=0;i<selection.edges.length;i++){id=selection.edges[i];var edge=this.body.edges[id];if(!edge){throw new RangeError('Edge with id \"'+id+'\" not found')}this.selectObject(edge)}}this.body.emitter.emit(\"_requestRedraw\")}},{key:\"selectNodes\",value:function selectNodes(selection){var highlightEdges=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(!selection||selection.length===undefined)throw\"Selection must be an array with ids\";this.setSelection({nodes:selection},{highlightEdges:highlightEdges})}},{key:\"selectEdges\",value:function selectEdges(selection){if(!selection||selection.length===undefined)throw\"Selection must be an array with ids\";this.setSelection({edges:selection})}},{key:\"updateSelection\",value:function updateSelection(){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){if(!this.body.nodes.hasOwnProperty(nodeId)){delete this.selectionObj.nodes[nodeId]}}}for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){if(!this.body.edges.hasOwnProperty(edgeId)){delete this.selectionObj.edges[edgeId]}}}}},{key:\"getClickedItems\",value:function getClickedItems(pointer){var point=this.canvas.DOMtoCanvas(pointer);var items=[];var nodeIndices=this.body.nodeIndices;var nodes=this.body.nodes;for(var i=nodeIndices.length-1;i>=0;i--){var node=nodes[nodeIndices[i]];var ret=node.getItemsOnPoint(point);items.push.apply(items,ret)}var edgeIndices=this.body.edgeIndices;var edges=this.body.edges;for(var _i=edgeIndices.length-1;_i>=0;_i--){var edge=edges[edgeIndices[_i]];var _ret=edge.getItemsOnPoint(point);items.push.apply(items,_ret)}return items}}]);return SelectionHandler}();exports[\"default\"]=SelectionHandler},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var NetworkUtil=__webpack_require__(76)[\"default\"];var _require=__webpack_require__(236),HorizontalStrategy=_require.HorizontalStrategy,VerticalStrategy=_require.VerticalStrategy;var HierarchicalStatus=function(){function HierarchicalStatus(){(0,_classCallCheck3[\"default\"])(this,HierarchicalStatus);this.childrenReference={};this.parentReference={};this.trees={};this.distributionOrdering={};this.levels={};this.distributionIndex={};this.isTree=false;this.treeIndex=-1}(0,_createClass3[\"default\"])(HierarchicalStatus,[{key:\"addRelation\",value:function addRelation(parentNodeId,childNodeId){if(this.childrenReference[parentNodeId]===undefined){this.childrenReference[parentNodeId]=[]}this.childrenReference[parentNodeId].push(childNodeId);if(this.parentReference[childNodeId]===undefined){this.parentReference[childNodeId]=[]}this.parentReference[childNodeId].push(parentNodeId)}},{key:\"checkIfTree\",value:function checkIfTree(){for(var i in this.parentReference){if(this.parentReference[i].length>1){this.isTree=false;return}}this.isTree=true}},{key:\"numTrees\",value:function numTrees(){return this.treeIndex+1}},{key:\"setTreeIndex\",value:function setTreeIndex(node,treeId){if(treeId===undefined)return;if(this.trees[node.id]===undefined){this.trees[node.id]=treeId;this.treeIndex=Math.max(treeId,this.treeIndex)}}},{key:\"ensureLevel\",value:function ensureLevel(nodeId){if(this.levels[nodeId]===undefined){this.levels[nodeId]=0}}},{key:\"getMaxLevel\",value:function getMaxLevel(nodeId){var _this=this;var accumulator={};var _getMaxLevel=function _getMaxLevel(nodeId){if(accumulator[nodeId]!==undefined){return accumulator[nodeId]}var level=_this.levels[nodeId];if(_this.childrenReference[nodeId]){var children=_this.childrenReference[nodeId];if(children.length>0){for(var i=0;i<children.length;i++){level=Math.max(level,_getMaxLevel(children[i]))}}}accumulator[nodeId]=level;return level};return _getMaxLevel(nodeId)}},{key:\"levelDownstream\",value:function levelDownstream(nodeA,nodeB){if(this.levels[nodeB.id]===undefined){if(this.levels[nodeA.id]===undefined){this.levels[nodeA.id]=0}this.levels[nodeB.id]=this.levels[nodeA.id]+1}}},{key:\"setMinLevelToZero\",value:function setMinLevelToZero(nodes){var minLevel=1e9;for(var nodeId in nodes){if(nodes.hasOwnProperty(nodeId)){if(this.levels[nodeId]!==undefined){minLevel=Math.min(this.levels[nodeId],minLevel)}}}for(var _nodeId in nodes){if(nodes.hasOwnProperty(_nodeId)){if(this.levels[_nodeId]!==undefined){this.levels[_nodeId]-=minLevel}}}}},{key:\"getTreeSize\",value:function getTreeSize(nodes,index){var min_x=1e9;var max_x=-1e9;var min_y=1e9;var max_y=-1e9;for(var nodeId in this.trees){if(this.trees.hasOwnProperty(nodeId)){if(this.trees[nodeId]===index){var node=nodes[nodeId];min_x=Math.min(node.x,min_x);max_x=Math.max(node.x,max_x);min_y=Math.min(node.y,min_y);max_y=Math.max(node.y,max_y)}}}return{min_x:min_x,max_x:max_x,min_y:min_y,max_y:max_y}}},{key:\"hasSameParent\",value:function hasSameParent(node1,node2){var parents1=this.parentReference[node1.id];var parents2=this.parentReference[node2.id];if(parents1===undefined||parents2===undefined){return false}for(var i=0;i<parents1.length;i++){for(var j=0;j<parents2.length;j++){if(parents1[i]==parents2[j]){return true}}}return false}},{key:\"inSameSubNetwork\",value:function inSameSubNetwork(node1,node2){return this.trees[node1.id]===this.trees[node2.id]}},{key:\"getLevels\",value:function getLevels(){return(0,_keys2[\"default\"])(this.distributionOrdering)}},{key:\"addToOrdering\",value:function addToOrdering(node,level){if(this.distributionOrdering[level]===undefined){this.distributionOrdering[level]=[]}var isPresent=false;var curLevel=this.distributionOrdering[level];for(var n in curLevel){if(curLevel[n]===node){isPresent=true;break}}if(!isPresent){this.distributionOrdering[level].push(node);this.distributionIndex[node.id]=this.distributionOrdering[level].length-1}}}]);return HierarchicalStatus}();var LayoutEngine=function(){function LayoutEngine(body){(0,_classCallCheck3[\"default\"])(this,LayoutEngine);this.body=body;this.initialRandomSeed=Math.round(Math.random()*1e6);this.randomSeed=this.initialRandomSeed;this.setPhysics=false;this.options={};this.optionsBackup={physics:{}};this.defaultOptions={randomSeed:undefined,improvedLayout:true,hierarchical:{enabled:false,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:true,edgeMinimization:true,parentCentralization:true,direction:\"UD\",sortMethod:\"hubsize\"}};util.extend(this.options,this.defaultOptions);this.bindEventListeners()}(0,_createClass3[\"default\"])(LayoutEngine,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this2=this;this.body.emitter.on(\"_dataChanged\",function(){_this2.setupHierarchicalLayout()});this.body.emitter.on(\"_dataLoaded\",function(){_this2.layoutNetwork()});this.body.emitter.on(\"_resetHierarchicalLayout\",function(){_this2.setupHierarchicalLayout()});this.body.emitter.on(\"_adjustEdgesForHierarchicalLayout\",function(){if(_this2.options.hierarchical.enabled!==true){return}var type=_this2.direction.curveType();_this2.body.emitter.emit(\"_forceDisableDynamicCurves\",type,false)})}},{key:\"setOptions\",value:function setOptions(options,allOptions){if(options!==undefined){var hierarchical=this.options.hierarchical;var prevHierarchicalState=hierarchical.enabled;util.selectiveDeepExtend([\"randomSeed\",\"improvedLayout\"],this.options,options);util.mergeOptions(this.options,options,\"hierarchical\");if(options.randomSeed!==undefined){this.initialRandomSeed=options.randomSeed}if(hierarchical.enabled===true){if(prevHierarchicalState===true){this.body.emitter.emit(\"refresh\",true)}if(hierarchical.direction===\"RL\"||hierarchical.direction===\"DU\"){if(hierarchical.levelSeparation>0){hierarchical.levelSeparation*=-1}}else{if(hierarchical.levelSeparation<0){hierarchical.levelSeparation*=-1}}this.setDirectionStrategy();this.body.emitter.emit(\"_resetHierarchicalLayout\");return this.adaptAllOptionsForHierarchicalLayout(allOptions)}else{if(prevHierarchicalState===true){this.body.emitter.emit(\"refresh\");return util.deepExtend(allOptions,this.optionsBackup)}}}return allOptions}},{key:\"adaptAllOptionsForHierarchicalLayout\",value:function adaptAllOptionsForHierarchicalLayout(allOptions){if(this.options.hierarchical.enabled===true){var backupPhysics=this.optionsBackup.physics;if(allOptions.physics===undefined||allOptions.physics===true){allOptions.physics={enabled:backupPhysics.enabled===undefined?true:backupPhysics.enabled,solver:\"hierarchicalRepulsion\"};backupPhysics.enabled=backupPhysics.enabled===undefined?true:backupPhysics.enabled;backupPhysics.solver=backupPhysics.solver||\"barnesHut\"}else if((0,_typeof3[\"default\"])(allOptions.physics)===\"object\"){backupPhysics.enabled=allOptions.physics.enabled===undefined?true:allOptions.physics.enabled;backupPhysics.solver=allOptions.physics.solver||\"barnesHut\";allOptions.physics.solver=\"hierarchicalRepulsion\"}else if(allOptions.physics!==false){backupPhysics.solver=\"barnesHut\";allOptions.physics={solver:\"hierarchicalRepulsion\"}}var type=this.direction.curveType();if(allOptions.edges===undefined){this.optionsBackup.edges={smooth:{enabled:true,type:\"dynamic\"}};allOptions.edges={smooth:false}}else if(allOptions.edges.smooth===undefined){this.optionsBackup.edges={smooth:{enabled:true,type:\"dynamic\"}};allOptions.edges.smooth=false}else{if(typeof allOptions.edges.smooth===\"boolean\"){this.optionsBackup.edges={smooth:allOptions.edges.smooth};allOptions.edges.smooth={enabled:allOptions.edges.smooth,type:type}}else{var smooth=allOptions.edges.smooth;if(smooth.type!==undefined&&smooth.type!==\"dynamic\"){type=smooth.type}this.optionsBackup.edges={smooth:smooth.enabled===undefined?true:smooth.enabled,type:smooth.type===undefined?\"dynamic\":smooth.type,roundness:smooth.roundness===undefined?.5:smooth.roundness,forceDirection:smooth.forceDirection===undefined?false:smooth.forceDirection};allOptions.edges.smooth={enabled:smooth.enabled===undefined?true:smooth.enabled,type:type,roundness:smooth.roundness===undefined?.5:smooth.roundness,forceDirection:smooth.forceDirection===undefined?false:smooth.forceDirection}}}this.body.emitter.emit(\"_forceDisableDynamicCurves\",type)}return allOptions}},{key:\"seededRandom\",value:function seededRandom(){var x=Math.sin(this.randomSeed++)*1e4;return x-Math.floor(x)}},{key:\"positionInitially\",value:function positionInitially(nodesArray){if(this.options.hierarchical.enabled!==true){this.randomSeed=this.initialRandomSeed;var radius=nodesArray.length+50;for(var i=0;i<nodesArray.length;i++){var node=nodesArray[i];var angle=2*Math.PI*this.seededRandom();if(node.x===undefined){node.x=radius*Math.cos(angle)}if(node.y===undefined){node.y=radius*Math.sin(angle)}}}}},{key:\"layoutNetwork\",value:function layoutNetwork(){if(this.options.hierarchical.enabled!==true&&this.options.improvedLayout===true){var indices=this.body.nodeIndices;var positionDefined=0;for(var i=0;i<indices.length;i++){var node=this.body.nodes[indices[i]];if(node.predefinedPosition===true){positionDefined+=1}}if(positionDefined<.5*indices.length){var MAX_LEVELS=10;var level=0;var clusterThreshold=150;var clusterOptions={clusterNodeProperties:{shape:\"ellipse\",label:\"\",group:\"\",font:{multi:false}},clusterEdgeProperties:{label:\"\",font:{multi:false},smooth:{enabled:false}}};if(indices.length>clusterThreshold){var startLength=indices.length;while(indices.length>clusterThreshold&&level<=MAX_LEVELS){level+=1;var before=indices.length;if(level%3===0){this.body.modules.clustering.clusterBridges(clusterOptions)}else{this.body.modules.clustering.clusterOutliers(clusterOptions)}var after=indices.length;if(before==after&&level%3!==0){this._declusterAll();this.body.emitter.emit(\"_layoutFailed\");console.info(\"This network could not be positioned by this version of the improved layout algorithm.\"+\" Please disable improvedLayout for better performance.\");return}}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*startLength)})}if(level>MAX_LEVELS){console.info(\"The clustering didn't succeed within the amount of interations allowed,\"+\" progressing with partial result.\")}this.body.modules.kamadaKawai.solve(indices,this.body.edgeIndices,true);this._shiftToCenter();var offset=70;for(var _i=0;_i<indices.length;_i++){var _node=this.body.nodes[indices[_i]];if(_node.predefinedPosition===false){_node.x+=(.5-this.seededRandom())*offset;_node.y+=(.5-this.seededRandom())*offset}}this._declusterAll();this.body.emitter.emit(\"_repositionBezierNodes\")}}}},{key:\"_shiftToCenter\",value:function _shiftToCenter(){var range=NetworkUtil.getRangeCore(this.body.nodes,this.body.nodeIndices);var center=NetworkUtil.findCenter(range);for(var i=0;i<this.body.nodeIndices.length;i++){var node=this.body.nodes[this.body.nodeIndices[i]];node.x-=center.x;node.y-=center.y}}},{key:\"_declusterAll\",value:function _declusterAll(){var clustersPresent=true;while(clustersPresent===true){clustersPresent=false;for(var i=0;i<this.body.nodeIndices.length;i++){if(this.body.nodes[this.body.nodeIndices[i]].isCluster===true){clustersPresent=true;this.body.modules.clustering.openCluster(this.body.nodeIndices[i],{},false)}}if(clustersPresent===true){this.body.emitter.emit(\"_dataChanged\")}}}},{key:\"getSeed\",value:function getSeed(){return this.initialRandomSeed}},{key:\"setupHierarchicalLayout\",value:function setupHierarchicalLayout(){if(this.options.hierarchical.enabled===true&&this.body.nodeIndices.length>0){var node=void 0,nodeId=void 0;var definedLevel=false;var undefinedLevel=false;this.lastNodeOnLevel={};this.hierarchical=new HierarchicalStatus;for(nodeId in this.body.nodes){if(this.body.nodes.hasOwnProperty(nodeId)){node=this.body.nodes[nodeId];if(node.options.level!==undefined){definedLevel=true;this.hierarchical.levels[nodeId]=node.options.level}else{undefinedLevel=true}}}if(undefinedLevel===true&&definedLevel===true){throw new Error(\"To use the hierarchical layout, nodes require either no predefined levels\"+\" or levels have to be defined for all nodes.\")}else{if(undefinedLevel===true){var sortMethod=this.options.hierarchical.sortMethod;if(sortMethod===\"hubsize\"){this._determineLevelsByHubsize()}else if(sortMethod===\"directed\"){this._determineLevelsDirected()}else if(sortMethod===\"custom\"){this._determineLevelsCustomCallback()}}for(var _nodeId2 in this.body.nodes){if(this.body.nodes.hasOwnProperty(_nodeId2)){this.hierarchical.ensureLevel(_nodeId2)}}var distribution=this._getDistribution();this._generateMap();this._placeNodesByHierarchy(distribution);this._condenseHierarchy();this._shiftToCenter()}}}},{key:\"_condenseHierarchy\",value:function _condenseHierarchy(){var _this3=this;var stillShifting=false;var branches={};var shiftTrees=function shiftTrees(){var treeSizes=getTreeSizes();var shiftBy=0;for(var i=0;i<treeSizes.length-1;i++){var diff=treeSizes[i].max-treeSizes[i+1].min;shiftBy+=diff+_this3.options.hierarchical.treeSpacing;shiftTree(i+1,shiftBy)}};var shiftTree=function shiftTree(index,offset){var trees=_this3.hierarchical.trees;for(var nodeId in trees){if(trees.hasOwnProperty(nodeId)){if(trees[nodeId]===index){_this3.direction.shift(nodeId,offset)}}}};var getTreeSizes=function getTreeSizes(){var treeWidths=[];for(var i=0;i<_this3.hierarchical.numTrees();i++){treeWidths.push(_this3.direction.getTreeSize(i))}return treeWidths};var getBranchNodes=function getBranchNodes(source,map){if(map[source.id]){return}map[source.id]=true;if(_this3.hierarchical.childrenReference[source.id]){var children=_this3.hierarchical.childrenReference[source.id];if(children.length>0){for(var i=0;i<children.length;i++){getBranchNodes(_this3.body.nodes[children[i]],map)}}}};var getBranchBoundary=function getBranchBoundary(branchMap){var maxLevel=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1e9;var minSpace=1e9;var maxSpace=1e9;var min=1e9;var max=-1e9;for(var branchNode in branchMap){if(branchMap.hasOwnProperty(branchNode)){var node=_this3.body.nodes[branchNode];var level=_this3.hierarchical.levels[node.id];var position=_this3.direction.getPosition(node);var _getSpaceAroundNode2=_this3._getSpaceAroundNode(node,branchMap),_getSpaceAroundNode3=(0,_slicedToArray3[\"default\"])(_getSpaceAroundNode2,2),minSpaceNode=_getSpaceAroundNode3[0],maxSpaceNode=_getSpaceAroundNode3[1];minSpace=Math.min(minSpaceNode,minSpace);maxSpace=Math.min(maxSpaceNode,maxSpace);if(level<=maxLevel){min=Math.min(position,min);max=Math.max(position,max)}}}return[min,max,minSpace,maxSpace]};var getCollisionLevel=function getCollisionLevel(node1,node2){var maxLevel1=_this3.hierarchical.getMaxLevel(node1.id);var maxLevel2=_this3.hierarchical.getMaxLevel(node2.id);return Math.min(maxLevel1,maxLevel2)};var shiftElementsCloser=function shiftElementsCloser(callback,levels,centerParents){var hier=_this3.hierarchical;for(var i=0;i<levels.length;i++){var level=levels[i];var levelNodes=hier.distributionOrdering[level];if(levelNodes.length>1){for(var j=0;j<levelNodes.length-1;j++){var node1=levelNodes[j];var node2=levelNodes[j+1];if(hier.hasSameParent(node1,node2)&&hier.inSameSubNetwork(node1,node2)){callback(node1,node2,centerParents)}}}}};var branchShiftCallback=function branchShiftCallback(node1,node2){var centerParent=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var pos1=_this3.direction.getPosition(node1);var pos2=_this3.direction.getPosition(node2);var diffAbs=Math.abs(pos2-pos1);var nodeSpacing=_this3.options.hierarchical.nodeSpacing;if(diffAbs>nodeSpacing){var branchNodes1={};var branchNodes2={};getBranchNodes(node1,branchNodes1);getBranchNodes(node2,branchNodes2);var maxLevel=getCollisionLevel(node1,node2);var branchNodeBoundary1=getBranchBoundary(branchNodes1,maxLevel);var branchNodeBoundary2=getBranchBoundary(branchNodes2,maxLevel);var max1=branchNodeBoundary1[1];var min2=branchNodeBoundary2[0];var minSpace2=branchNodeBoundary2[2];var diffBranch=Math.abs(max1-min2);if(diffBranch>nodeSpacing){var offset=max1-min2+nodeSpacing;if(offset<-minSpace2+nodeSpacing){offset=-minSpace2+nodeSpacing}if(offset<0){_this3._shiftBlock(node2.id,offset);stillShifting=true;if(centerParent===true)_this3._centerParent(node2)}}}};var minimizeEdgeLength=function minimizeEdgeLength(iterations,node){var nodeId=node.id;var allEdges=node.edges;var nodeLevel=_this3.hierarchical.levels[node.id];var C2=_this3.options.hierarchical.levelSeparation*_this3.options.hierarchical.levelSeparation;var referenceNodes={};var aboveEdges=[];for(var i=0;i<allEdges.length;i++){var edge=allEdges[i];if(edge.toId!=edge.fromId){var otherNode=edge.toId==nodeId?edge.from:edge.to;referenceNodes[allEdges[i].id]=otherNode;if(_this3.hierarchical.levels[otherNode.id]<nodeLevel){aboveEdges.push(edge)}}}var getFx=function getFx(point,edges){var sum=0;for(var _i2=0;_i2<edges.length;_i2++){if(referenceNodes[edges[_i2].id]!==undefined){var a=_this3.direction.getPosition(referenceNodes[edges[_i2].id])-point;sum+=a/Math.sqrt(a*a+C2)}}return sum};var getDFx=function getDFx(point,edges){var sum=0;for(var _i3=0;_i3<edges.length;_i3++){if(referenceNodes[edges[_i3].id]!==undefined){var a=_this3.direction.getPosition(referenceNodes[edges[_i3].id])-point;sum-=C2*Math.pow(a*a+C2,-1.5)}}return sum};var getGuess=function getGuess(iterations,edges){var guess=_this3.direction.getPosition(node);var guessMap={};for(var _i4=0;_i4<iterations;_i4++){var fx=getFx(guess,edges);var dfx=getDFx(guess,edges);var limit=40;var ratio=Math.max(-limit,Math.min(limit,Math.round(fx/dfx)));guess=guess-ratio;if(guessMap[guess]!==undefined){break}guessMap[guess]=_i4}return guess};var moveBranch=function moveBranch(guess){var nodePosition=_this3.direction.getPosition(node);if(branches[node.id]===undefined){var branchNodes={};getBranchNodes(node,branchNodes);branches[node.id]=branchNodes}var branchBoundary=getBranchBoundary(branches[node.id]);var minSpaceBranch=branchBoundary[2];var maxSpaceBranch=branchBoundary[3];var diff=guess-nodePosition;var branchOffset=0;if(diff>0){branchOffset=Math.min(diff,maxSpaceBranch-_this3.options.hierarchical.nodeSpacing)}else if(diff<0){branchOffset=-Math.min(-diff,minSpaceBranch-_this3.options.hierarchical.nodeSpacing)}if(branchOffset!=0){_this3._shiftBlock(node.id,branchOffset);stillShifting=true}};var moveNode=function moveNode(guess){var nodePosition=_this3.direction.getPosition(node);var _getSpaceAroundNode4=_this3._getSpaceAroundNode(node),_getSpaceAroundNode5=(0,_slicedToArray3[\"default\"])(_getSpaceAroundNode4,2),minSpace=_getSpaceAroundNode5[0],maxSpace=_getSpaceAroundNode5[1];var diff=guess-nodePosition;var newPosition=nodePosition;if(diff>0){newPosition=Math.min(nodePosition+(maxSpace-_this3.options.hierarchical.nodeSpacing),guess)}else if(diff<0){newPosition=Math.max(nodePosition-(minSpace-_this3.options.hierarchical.nodeSpacing),guess)}if(newPosition!==nodePosition){_this3.direction.setPosition(node,newPosition);stillShifting=true}};var guess=getGuess(iterations,aboveEdges);moveBranch(guess);guess=getGuess(iterations,allEdges);moveNode(guess)};var minimizeEdgeLengthBottomUp=function minimizeEdgeLengthBottomUp(iterations){var levels=_this3.hierarchical.getLevels();levels=levels.reverse();for(var i=0;i<iterations;i++){stillShifting=false;for(var j=0;j<levels.length;j++){var level=levels[j];var levelNodes=_this3.hierarchical.distributionOrdering[level];for(var k=0;k<levelNodes.length;k++){minimizeEdgeLength(1e3,levelNodes[k])}}if(stillShifting!==true){break}}};var shiftBranchesCloserBottomUp=function shiftBranchesCloserBottomUp(iterations){var levels=_this3.hierarchical.getLevels();levels=levels.reverse();for(var i=0;i<iterations;i++){stillShifting=false;shiftElementsCloser(branchShiftCallback,levels,true);if(stillShifting!==true){break}}};var centerAllParents=function centerAllParents(){for(var nodeId in _this3.body.nodes){if(_this3.body.nodes.hasOwnProperty(nodeId))_this3._centerParent(_this3.body.nodes[nodeId])}};var centerAllParentsBottomUp=function centerAllParentsBottomUp(){var levels=_this3.hierarchical.getLevels()\n;levels=levels.reverse();for(var i=0;i<levels.length;i++){var level=levels[i];var levelNodes=_this3.hierarchical.distributionOrdering[level];for(var j=0;j<levelNodes.length;j++){_this3._centerParent(levelNodes[j])}}};if(this.options.hierarchical.blockShifting===true){shiftBranchesCloserBottomUp(5);centerAllParents()}if(this.options.hierarchical.edgeMinimization===true){minimizeEdgeLengthBottomUp(20)}if(this.options.hierarchical.parentCentralization===true){centerAllParentsBottomUp()}shiftTrees()}},{key:\"_getSpaceAroundNode\",value:function _getSpaceAroundNode(node,map){var useMap=true;if(map===undefined){useMap=false}var level=this.hierarchical.levels[node.id];if(level!==undefined){var index=this.hierarchical.distributionIndex[node.id];var position=this.direction.getPosition(node);var ordering=this.hierarchical.distributionOrdering[level];var minSpace=1e9;var maxSpace=1e9;if(index!==0){var prevNode=ordering[index-1];if(useMap===true&&map[prevNode.id]===undefined||useMap===false){var prevPos=this.direction.getPosition(prevNode);minSpace=position-prevPos}}if(index!=ordering.length-1){var nextNode=ordering[index+1];if(useMap===true&&map[nextNode.id]===undefined||useMap===false){var nextPos=this.direction.getPosition(nextNode);maxSpace=Math.min(maxSpace,nextPos-position)}}return[minSpace,maxSpace]}else{return[0,0]}}},{key:\"_centerParent\",value:function _centerParent(node){if(this.hierarchical.parentReference[node.id]){var parents=this.hierarchical.parentReference[node.id];for(var i=0;i<parents.length;i++){var parentId=parents[i];var parentNode=this.body.nodes[parentId];var children=this.hierarchical.childrenReference[parentId];if(children!==undefined){var newPosition=this._getCenterPosition(children);var position=this.direction.getPosition(parentNode);var _getSpaceAroundNode6=this._getSpaceAroundNode(parentNode),_getSpaceAroundNode7=(0,_slicedToArray3[\"default\"])(_getSpaceAroundNode6,2),minSpace=_getSpaceAroundNode7[0],maxSpace=_getSpaceAroundNode7[1];var diff=position-newPosition;if(diff<0&&Math.abs(diff)<maxSpace-this.options.hierarchical.nodeSpacing||diff>0&&Math.abs(diff)<minSpace-this.options.hierarchical.nodeSpacing){this.direction.setPosition(parentNode,newPosition)}}}}}},{key:\"_placeNodesByHierarchy\",value:function _placeNodesByHierarchy(distribution){this.positionedNodes={};for(var level in distribution){if(distribution.hasOwnProperty(level)){var nodeArray=(0,_keys2[\"default\"])(distribution[level]);nodeArray=this._indexArrayToNodes(nodeArray);this.direction.sort(nodeArray);var handledNodeCount=0;for(var i=0;i<nodeArray.length;i++){var node=nodeArray[i];if(this.positionedNodes[node.id]===undefined){var spacing=this.options.hierarchical.nodeSpacing;var pos=spacing*handledNodeCount;if(handledNodeCount>0){pos=this.direction.getPosition(nodeArray[i-1])+spacing}this.direction.setPosition(node,pos,level);this._validatePositionAndContinue(node,level,pos);handledNodeCount++}}}}}},{key:\"_placeBranchNodes\",value:function _placeBranchNodes(parentId,parentLevel){var childRef=this.hierarchical.childrenReference[parentId];if(childRef===undefined){return}var childNodes=[];for(var i=0;i<childRef.length;i++){childNodes.push(this.body.nodes[childRef[i]])}this.direction.sort(childNodes);for(var _i5=0;_i5<childNodes.length;_i5++){var childNode=childNodes[_i5];var childNodeLevel=this.hierarchical.levels[childNode.id];if(childNodeLevel>parentLevel&&this.positionedNodes[childNode.id]===undefined){var spacing=this.options.hierarchical.nodeSpacing;var pos=void 0;if(_i5===0){pos=this.direction.getPosition(this.body.nodes[parentId])}else{pos=this.direction.getPosition(childNodes[_i5-1])+spacing}this.direction.setPosition(childNode,pos,childNodeLevel);this._validatePositionAndContinue(childNode,childNodeLevel,pos)}else{return}}var center=this._getCenterPosition(childNodes);this.direction.setPosition(this.body.nodes[parentId],center,parentLevel)}},{key:\"_validatePositionAndContinue\",value:function _validatePositionAndContinue(node,level,pos){if(!this.hierarchical.isTree)return;if(this.lastNodeOnLevel[level]!==undefined){var previousPos=this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[level]]);if(pos-previousPos<this.options.hierarchical.nodeSpacing){var diff=previousPos+this.options.hierarchical.nodeSpacing-pos;var sharedParent=this._findCommonParent(this.lastNodeOnLevel[level],node.id);this._shiftBlock(sharedParent.withChild,diff)}}this.lastNodeOnLevel[level]=node.id;this.positionedNodes[node.id]=true;this._placeBranchNodes(node.id,level)}},{key:\"_indexArrayToNodes\",value:function _indexArrayToNodes(idArray){var array=[];for(var i=0;i<idArray.length;i++){array.push(this.body.nodes[idArray[i]])}return array}},{key:\"_getDistribution\",value:function _getDistribution(){var distribution={};var nodeId=void 0,node=void 0;for(nodeId in this.body.nodes){if(this.body.nodes.hasOwnProperty(nodeId)){node=this.body.nodes[nodeId];var level=this.hierarchical.levels[nodeId]===undefined?0:this.hierarchical.levels[nodeId];this.direction.fix(node,level);if(distribution[level]===undefined){distribution[level]={}}distribution[level][nodeId]=node}}return distribution}},{key:\"_getActiveEdges\",value:function _getActiveEdges(node){var _this4=this;var result=[];util.forEach(node.edges,function(edge){if(_this4.body.edgeIndices.indexOf(edge.id)!==-1){result.push(edge)}});return result}},{key:\"_getHubSizes\",value:function _getHubSizes(){var _this5=this;var hubSizes={};var nodeIds=this.body.nodeIndices;util.forEach(nodeIds,function(nodeId){var node=_this5.body.nodes[nodeId];var hubSize=_this5._getActiveEdges(node).length;hubSizes[hubSize]=true});var result=[];util.forEach(hubSizes,function(size){result.push(Number(size))});result.sort(function(a,b){return b-a});return result}},{key:\"_determineLevelsByHubsize\",value:function _determineLevelsByHubsize(){var _this6=this;var levelDownstream=function levelDownstream(nodeA,nodeB){_this6.hierarchical.levelDownstream(nodeA,nodeB)};var hubSizes=this._getHubSizes();var _loop=function _loop(i){var hubSize=hubSizes[i];if(hubSize===0)return\"break\";util.forEach(_this6.body.nodeIndices,function(nodeId){var node=_this6.body.nodes[nodeId];if(hubSize===_this6._getActiveEdges(node).length){_this6._crawlNetwork(levelDownstream,nodeId)}})};for(var i=0;i<hubSizes.length;++i){var _ret=_loop(i);if(_ret===\"break\")break}}},{key:\"_determineLevelsCustomCallback\",value:function _determineLevelsCustomCallback(){var _this7=this;var minLevel=1e5;var customCallback=function customCallback(nodeA,nodeB,edge){};var levelByDirection=function levelByDirection(nodeA,nodeB,edge){var levelA=_this7.hierarchical.levels[nodeA.id];if(levelA===undefined){levelA=_this7.hierarchical.levels[nodeA.id]=minLevel}var diff=customCallback(NetworkUtil.cloneOptions(nodeA,\"node\"),NetworkUtil.cloneOptions(nodeB,\"node\"),NetworkUtil.cloneOptions(edge,\"edge\"));_this7.hierarchical.levels[nodeB.id]=levelA+diff};this._crawlNetwork(levelByDirection);this.hierarchical.setMinLevelToZero(this.body.nodes)}},{key:\"_determineLevelsDirected\",value:function _determineLevelsDirected(){var _this8=this;var minLevel=1e4;var isBidirectional=function isBidirectional(edge){util.forEach(_this8.body.edges,function(otherEdge){if(otherEdge.toId===edge.fromId&&otherEdge.fromId===edge.toId){return true}});return false};var levelByDirection=function levelByDirection(nodeA,nodeB,edge){var levelA=_this8.hierarchical.levels[nodeA.id];var levelB=_this8.hierarchical.levels[nodeB.id];if(isBidirectional(edge)&&levelA!==undefined&&levelB!==undefined){return}if(levelA===undefined){levelA=_this8.hierarchical.levels[nodeA.id]=minLevel}if(edge.toId==nodeB.id){_this8.hierarchical.levels[nodeB.id]=levelA+1}else{_this8.hierarchical.levels[nodeB.id]=levelA-1}};this._crawlNetwork(levelByDirection);this.hierarchical.setMinLevelToZero(this.body.nodes)}},{key:\"_generateMap\",value:function _generateMap(){var _this9=this;var fillInRelations=function fillInRelations(parentNode,childNode){if(_this9.hierarchical.levels[childNode.id]>_this9.hierarchical.levels[parentNode.id]){_this9.hierarchical.addRelation(parentNode.id,childNode.id)}};this._crawlNetwork(fillInRelations);this.hierarchical.checkIfTree()}},{key:\"_crawlNetwork\",value:function _crawlNetwork(){var _this10=this;var callback=arguments.length>0&&arguments[0]!==undefined?arguments[0]:function(){};var startingNodeId=arguments[1];var progress={};var crawler=function crawler(node,tree){if(progress[node.id]===undefined){_this10.hierarchical.setTreeIndex(node,tree);progress[node.id]=true;var childNode=void 0;var edges=_this10._getActiveEdges(node);for(var i=0;i<edges.length;i++){var edge=edges[i];if(edge.connected===true){if(edge.toId==node.id){childNode=edge.from}else{childNode=edge.to}if(node.id!=childNode.id){callback(node,childNode,edge);crawler(childNode,tree)}}}}};if(startingNodeId===undefined){var treeIndex=0;for(var i=0;i<this.body.nodeIndices.length;i++){var nodeId=this.body.nodeIndices[i];if(progress[nodeId]===undefined){var node=this.body.nodes[nodeId];crawler(node,treeIndex);treeIndex+=1}}}else{var _node2=this.body.nodes[startingNodeId];if(_node2===undefined){console.error(\"Node not found:\",startingNodeId);return}crawler(_node2)}}},{key:\"_shiftBlock\",value:function _shiftBlock(parentId,diff){var _this11=this;var progress={};var shifter=function shifter(parentId){if(progress[parentId]){return}progress[parentId]=true;_this11.direction.shift(parentId,diff);var childRef=_this11.hierarchical.childrenReference[parentId];if(childRef!==undefined){for(var i=0;i<childRef.length;i++){shifter(childRef[i])}}};shifter(parentId)}},{key:\"_findCommonParent\",value:function _findCommonParent(childA,childB){var _this12=this;var parents={};var iterateParents=function iterateParents(parents,child){var parentRef=_this12.hierarchical.parentReference[child];if(parentRef!==undefined){for(var i=0;i<parentRef.length;i++){var parent=parentRef[i];parents[parent]=true;iterateParents(parents,parent)}}};var findParent=function findParent(parents,child){var parentRef=_this12.hierarchical.parentReference[child];if(parentRef!==undefined){for(var i=0;i<parentRef.length;i++){var parent=parentRef[i];if(parents[parent]!==undefined){return{foundParent:parent,withChild:child}}var branch=findParent(parents,parent);if(branch.foundParent!==null){return branch}}}return{foundParent:null,withChild:child}};iterateParents(parents,childA);return findParent(parents,childB)}},{key:\"setDirectionStrategy\",value:function setDirectionStrategy(){var isVertical=this.options.hierarchical.direction===\"UD\"||this.options.hierarchical.direction===\"DU\";if(isVertical){this.direction=new VerticalStrategy(this)}else{this.direction=new HorizontalStrategy(this)}}},{key:\"_getCenterPosition\",value:function _getCenterPosition(childNodes){var minPos=1e9;var maxPos=-1e9;for(var i=0;i<childNodes.length;i++){var childNode=void 0;if(childNodes[i].id!==undefined){childNode=childNodes[i]}else{var childNodeId=childNodes[i];childNode=this.body.nodes[childNodeId]}var position=this.direction.getPosition(childNode);minPos=Math.min(minPos,position);maxPos=Math.max(maxPos,position)}return.5*(minPos+maxPos)}}]);return LayoutEngine}();exports[\"default\"]=LayoutEngine},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.VerticalStrategy=exports.HorizontalStrategy=undefined;var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var DirectionInterface=function(){function DirectionInterface(){(0,_classCallCheck3[\"default\"])(this,DirectionInterface)}(0,_createClass3[\"default\"])(DirectionInterface,[{key:\"abstract\",value:function abstract(){throw new Error(\"Can't instantiate abstract class!\")}},{key:\"fake_use\",value:function fake_use(){}},{key:\"curveType\",value:function curveType(){return this.abstract()}},{key:\"getPosition\",value:function getPosition(node){this.fake_use(node);return this.abstract()}},{key:\"setPosition\",value:function setPosition(node,position){var level=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;this.fake_use(node,position,level);this.abstract()}},{key:\"getTreeSize\",value:function getTreeSize(index){this.fake_use(index);return this.abstract()}},{key:\"sort\",value:function sort(nodeArray){this.fake_use(nodeArray);this.abstract()}},{key:\"fix\",value:function fix(node,level){this.fake_use(node,level);this.abstract()}},{key:\"shift\",value:function shift(nodeId,diff){this.fake_use(nodeId,diff);this.abstract()}}]);return DirectionInterface}();var VerticalStrategy=function(_DirectionInterface){(0,_inherits3[\"default\"])(VerticalStrategy,_DirectionInterface);function VerticalStrategy(layout){(0,_classCallCheck3[\"default\"])(this,VerticalStrategy);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(VerticalStrategy.__proto__||(0,_getPrototypeOf2[\"default\"])(VerticalStrategy)).call(this));_this.layout=layout;return _this}(0,_createClass3[\"default\"])(VerticalStrategy,[{key:\"curveType\",value:function curveType(){return\"horizontal\"}},{key:\"getPosition\",value:function getPosition(node){return node.x}},{key:\"setPosition\",value:function setPosition(node,position){var level=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;if(level!==undefined){this.layout.hierarchical.addToOrdering(node,level)}node.x=position}},{key:\"getTreeSize\",value:function getTreeSize(index){var res=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,index);return{min:res.min_x,max:res.max_x}}},{key:\"sort\",value:function sort(nodeArray){nodeArray.sort(function(a,b){if(a.x===undefined||b.x===undefined)return 0;return a.x-b.x})}},{key:\"fix\",value:function fix(node,level){node.y=this.layout.options.hierarchical.levelSeparation*level;node.options.fixed.y=true}},{key:\"shift\",value:function shift(nodeId,diff){this.layout.body.nodes[nodeId].x+=diff}}]);return VerticalStrategy}(DirectionInterface);var HorizontalStrategy=function(_DirectionInterface2){(0,_inherits3[\"default\"])(HorizontalStrategy,_DirectionInterface2);function HorizontalStrategy(layout){(0,_classCallCheck3[\"default\"])(this,HorizontalStrategy);var _this2=(0,_possibleConstructorReturn3[\"default\"])(this,(HorizontalStrategy.__proto__||(0,_getPrototypeOf2[\"default\"])(HorizontalStrategy)).call(this));_this2.layout=layout;return _this2}(0,_createClass3[\"default\"])(HorizontalStrategy,[{key:\"curveType\",value:function curveType(){return\"vertical\"}},{key:\"getPosition\",value:function getPosition(node){return node.y}},{key:\"setPosition\",value:function setPosition(node,position){var level=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;if(level!==undefined){this.layout.hierarchical.addToOrdering(node,level)}node.y=position}},{key:\"getTreeSize\",value:function getTreeSize(index){var res=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,index);return{min:res.min_y,max:res.max_y}}},{key:\"sort\",value:function sort(nodeArray){nodeArray.sort(function(a,b){if(a.y===undefined||b.y===undefined)return 0;return a.y-b.y})}},{key:\"fix\",value:function fix(node,level){node.x=this.layout.options.hierarchical.levelSeparation*level;node.options.fixed.x=true}},{key:\"shift\",value:function shift(nodeId,diff){this.layout.body.nodes[nodeId].y+=diff}}]);return HorizontalStrategy}(DirectionInterface);exports.HorizontalStrategy=HorizontalStrategy;exports.VerticalStrategy=VerticalStrategy},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Hammer=__webpack_require__(10);var hammerUtil=__webpack_require__(37);var ManipulationSystem=function(){function ManipulationSystem(body,canvas,selectionHandler){var _this=this;(0,_classCallCheck3[\"default\"])(this,ManipulationSystem);this.body=body;this.canvas=canvas;this.selectionHandler=selectionHandler;this.editMode=false;this.manipulationDiv=undefined;this.editModeDiv=undefined;this.closeDiv=undefined;this.manipulationHammers=[];this.temporaryUIFunctions={};this.temporaryEventFunctions=[];this.touchTime=0;this.temporaryIds={nodes:[],edges:[]};this.guiEnabled=false;this.inMode=false;this.selectedControlNode=undefined;this.options={};this.defaultOptions={enabled:false,initiallyActive:false,addNode:true,addEdge:true,editNode:undefined,editEdge:true,deleteNode:true,deleteEdge:true,controlNodeStyle:{shape:\"dot\",size:6,color:{background:\"#ff0000\",border:\"#3c3c3c\",highlight:{background:\"#07f968\",border:\"#3c3c3c\"}},borderWidth:2,borderWidthSelected:2}};util.extend(this.options,this.defaultOptions);this.body.emitter.on(\"destroy\",function(){_this._clean()});this.body.emitter.on(\"_dataChanged\",this._restore.bind(this));this.body.emitter.on(\"_resetData\",this._restore.bind(this))}(0,_createClass3[\"default\"])(ManipulationSystem,[{key:\"_restore\",value:function _restore(){if(this.inMode!==false){if(this.options.initiallyActive===true){this.enableEditMode()}else{this.disableEditMode()}}}},{key:\"setOptions\",value:function setOptions(options,allOptions,globalOptions){if(allOptions!==undefined){if(allOptions.locale!==undefined){this.options.locale=allOptions.locale}else{this.options.locale=globalOptions.locale}if(allOptions.locales!==undefined){this.options.locales=allOptions.locales}else{this.options.locales=globalOptions.locales}}if(options!==undefined){if(typeof options===\"boolean\"){this.options.enabled=options}else{this.options.enabled=true;util.deepExtend(this.options,options)}if(this.options.initiallyActive===true){this.editMode=true}this._setup()}}},{key:\"toggleEditMode\",value:function toggleEditMode(){if(this.editMode===true){this.disableEditMode()}else{this.enableEditMode()}}},{key:\"enableEditMode\",value:function enableEditMode(){this.editMode=true;this._clean();if(this.guiEnabled===true){this.manipulationDiv.style.display=\"block\";this.closeDiv.style.display=\"block\";this.editModeDiv.style.display=\"none\";this.showManipulatorToolbar()}}},{key:\"disableEditMode\",value:function disableEditMode(){this.editMode=false;this._clean();if(this.guiEnabled===true){this.manipulationDiv.style.display=\"none\";this.closeDiv.style.display=\"none\";this.editModeDiv.style.display=\"block\";this._createEditButton()}}},{key:\"showManipulatorToolbar\",value:function showManipulatorToolbar(){this._clean();this.manipulationDOM={};if(this.guiEnabled===true){this.editMode=true;this.manipulationDiv.style.display=\"block\";this.closeDiv.style.display=\"block\";var selectedNodeCount=this.selectionHandler._getSelectedNodeCount();var selectedEdgeCount=this.selectionHandler._getSelectedEdgeCount();var selectedTotalCount=selectedNodeCount+selectedEdgeCount;var locale=this.options.locales[this.options.locale];var needSeperator=false;if(this.options.addNode!==false){this._createAddNodeButton(locale);needSeperator=true}if(this.options.addEdge!==false){if(needSeperator===true){this._createSeperator(1)}else{needSeperator=true}this._createAddEdgeButton(locale)}if(selectedNodeCount===1&&typeof this.options.editNode===\"function\"){if(needSeperator===true){this._createSeperator(2)}else{needSeperator=true}this._createEditNodeButton(locale)}else if(selectedEdgeCount===1&&selectedNodeCount===0&&this.options.editEdge!==false){if(needSeperator===true){this._createSeperator(3)}else{needSeperator=true}this._createEditEdgeButton(locale)}if(selectedTotalCount!==0){if(selectedNodeCount>0&&this.options.deleteNode!==false){if(needSeperator===true){this._createSeperator(4)}this._createDeleteButton(locale)}else if(selectedNodeCount===0&&this.options.deleteEdge!==false){if(needSeperator===true){this._createSeperator(4)}this._createDeleteButton(locale)}}this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this));this._temporaryBindEvent(\"select\",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit(\"_redraw\")}},{key:\"addNodeMode\",value:function addNodeMode(){if(this.editMode!==true){this.enableEditMode()}this._clean();this.inMode=\"addNode\";if(this.guiEnabled===true){var locale=this.options.locales[this.options.locale];this.manipulationDOM={};this._createBackButton(locale);this._createSeperator();this._createDescription(locale[\"addDescription\"]||this.options.locales[\"en\"][\"addDescription\"]);this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent(\"click\",this._performAddNode.bind(this))}},{key:\"editNode\",value:function editNode(){var _this2=this;if(this.editMode!==true){this.enableEditMode()}this._clean();var node=this.selectionHandler._getSelectedNode();if(node!==undefined){this.inMode=\"editNode\";if(typeof this.options.editNode===\"function\"){if(node.isCluster!==true){var data=util.deepExtend({},node.options,false);data.x=node.x;data.y=node.y;if(this.options.editNode.length===2){this.options.editNode(data,function(finalizedData){if(finalizedData!==null&&finalizedData!==undefined&&_this2.inMode===\"editNode\"){_this2.body.data.nodes.getDataSet().update(finalizedData)}_this2.showManipulatorToolbar()})}else{throw new Error(\"The function for edit does not support two arguments (data, callback)\")}}else{alert(this.options.locales[this.options.locale][\"editClusterError\"]||this.options.locales[\"en\"][\"editClusterError\"])}}else{throw new Error(\"No function has been configured to handle the editing of nodes.\")}}else{this.showManipulatorToolbar()}}},{key:\"addEdgeMode\",value:function addEdgeMode(){if(this.editMode!==true){this.enableEditMode()}this._clean();this.inMode=\"addEdge\";if(this.guiEnabled===true){var locale=this.options.locales[this.options.locale];this.manipulationDOM={};this._createBackButton(locale);this._createSeperator();this._createDescription(locale[\"edgeDescription\"]||this.options.locales[\"en\"][\"edgeDescription\"]);this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI(\"onTouch\",this._handleConnect.bind(this));this._temporaryBindUI(\"onDragEnd\",this._finishConnect.bind(this));this._temporaryBindUI(\"onDrag\",this._dragControlNode.bind(this));this._temporaryBindUI(\"onRelease\",this._finishConnect.bind(this));this._temporaryBindUI(\"onDragStart\",this._dragStartEdge.bind(this));this._temporaryBindUI(\"onHold\",function(){})}},{key:\"editEdgeMode\",value:function editEdgeMode(){if(this.editMode!==true){this.enableEditMode()}this._clean();this.inMode=\"editEdge\";if((0,_typeof3[\"default\"])(this.options.editEdge)===\"object\"&&typeof this.options.editEdge.editWithoutDrag===\"function\"){this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0];if(this.edgeBeingEditedId!==undefined){var edge=this.body.edges[this.edgeBeingEditedId];this._performEditEdge(edge.from,edge.to);return}}if(this.guiEnabled===true){var locale=this.options.locales[this.options.locale];this.manipulationDOM={};this._createBackButton(locale);this._createSeperator();this._createDescription(locale[\"editEdgeDescription\"]||this.options.locales[\"en\"][\"editEdgeDescription\"]);this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0];if(this.edgeBeingEditedId!==undefined){var _edge=this.body.edges[this.edgeBeingEditedId];var controlNodeFrom=this._getNewTargetNode(_edge.from.x,_edge.from.y);var controlNodeTo=this._getNewTargetNode(_edge.to.x,_edge.to.y);this.temporaryIds.nodes.push(controlNodeFrom.id);this.temporaryIds.nodes.push(controlNodeTo.id);this.body.nodes[controlNodeFrom.id]=controlNodeFrom;this.body.nodeIndices.push(controlNodeFrom.id);this.body.nodes[controlNodeTo.id]=controlNodeTo;this.body.nodeIndices.push(controlNodeTo.id);this._temporaryBindUI(\"onTouch\",this._controlNodeTouch.bind(this));this._temporaryBindUI(\"onTap\",function(){});this._temporaryBindUI(\"onHold\",function(){});this._temporaryBindUI(\"onDragStart\",this._controlNodeDragStart.bind(this));this._temporaryBindUI(\"onDrag\",this._controlNodeDrag.bind(this));this._temporaryBindUI(\"onDragEnd\",this._controlNodeDragEnd.bind(this));this._temporaryBindUI(\"onMouseMove\",function(){});this._temporaryBindEvent(\"beforeDrawing\",function(ctx){var positions=_edge.edgeType.findBorderPositions(ctx);if(controlNodeFrom.selected===false){controlNodeFrom.x=positions.from.x;controlNodeFrom.y=positions.from.y}if(controlNodeTo.selected===false){controlNodeTo.x=positions.to.x;controlNodeTo.y=positions.to.y}});this.body.emitter.emit(\"_redraw\")}else{this.showManipulatorToolbar()}}},{key:\"deleteSelected\",value:function deleteSelected(){var _this3=this;if(this.editMode!==true){this.enableEditMode()}this._clean();this.inMode=\"delete\";var selectedNodes=this.selectionHandler.getSelectedNodes();var selectedEdges=this.selectionHandler.getSelectedEdges();var deleteFunction=undefined;if(selectedNodes.length>0){for(var i=0;i<selectedNodes.length;i++){if(this.body.nodes[selectedNodes[i]].isCluster===true){alert(this.options.locales[this.options.locale][\"deleteClusterError\"]||this.options.locales[\"en\"][\"deleteClusterError\"]);return}}if(typeof this.options.deleteNode===\"function\"){deleteFunction=this.options.deleteNode}}else if(selectedEdges.length>0){if(typeof this.options.deleteEdge===\"function\"){deleteFunction=this.options.deleteEdge}}if(typeof deleteFunction===\"function\"){var data={nodes:selectedNodes,edges:selectedEdges};if(deleteFunction.length===2){deleteFunction(data,function(finalizedData){if(finalizedData!==null&&finalizedData!==undefined&&_this3.inMode===\"delete\"){_this3.body.data.edges.getDataSet().remove(finalizedData.edges);_this3.body.data.nodes.getDataSet().remove(finalizedData.nodes);_this3.body.emitter.emit(\"startSimulation\");_this3.showManipulatorToolbar()}else{_this3.body.emitter.emit(\"startSimulation\");_this3.showManipulatorToolbar()}})}else{throw new Error(\"The function for delete does not support two arguments (data, callback)\")}}else{this.body.data.edges.getDataSet().remove(selectedEdges);this.body.data.nodes.getDataSet().remove(selectedNodes);this.body.emitter.emit(\"startSimulation\");this.showManipulatorToolbar()}}},{key:\"_setup\",value:function _setup(){if(this.options.enabled===true){this.guiEnabled=true;this._createWrappers();if(this.editMode===false){this._createEditButton()}else{this.showManipulatorToolbar()}}else{this._removeManipulationDOM();this.guiEnabled=false}}},{key:\"_createWrappers\",value:function _createWrappers(){if(this.manipulationDiv===undefined){this.manipulationDiv=document.createElement(\"div\");this.manipulationDiv.className=\"vis-manipulation\";if(this.editMode===true){this.manipulationDiv.style.display=\"block\"}else{this.manipulationDiv.style.display=\"none\"}this.canvas.frame.appendChild(this.manipulationDiv)}if(this.editModeDiv===undefined){this.editModeDiv=document.createElement(\"div\");this.editModeDiv.className=\"vis-edit-mode\";if(this.editMode===true){this.editModeDiv.style.display=\"none\"}else{this.editModeDiv.style.display=\"block\"}this.canvas.frame.appendChild(this.editModeDiv)}if(this.closeDiv===undefined){this.closeDiv=document.createElement(\"div\");this.closeDiv.className=\"vis-close\";this.closeDiv.style.display=this.manipulationDiv.style.display;this.canvas.frame.appendChild(this.closeDiv)}}},{key:\"_getNewTargetNode\",value:function _getNewTargetNode(x,y){var controlNodeStyle=util.deepExtend({},this.options.controlNodeStyle);controlNodeStyle.id=\"targetNode\"+util.randomUUID();controlNodeStyle.hidden=false;controlNodeStyle.physics=false;controlNodeStyle.x=x;controlNodeStyle.y=y;var node=this.body.functions.createNode(controlNodeStyle);node.shape.boundingBox={left:x,right:x,top:y,bottom:y};return node}},{key:\"_createEditButton\",value:function _createEditButton(){this._clean();this.manipulationDOM={};util.recursiveDOMDelete(this.editModeDiv);var locale=this.options.locales[this.options.locale];var button=this._createButton(\"editMode\",\"vis-button vis-edit vis-edit-mode\",locale[\"edit\"]||this.options.locales[\"en\"][\"edit\"]);this.editModeDiv.appendChild(button);this._bindHammerToDiv(button,this.toggleEditMode.bind(this))}},{key:\"_clean\",value:function _clean(){this.inMode=false;if(this.guiEnabled===true){util.recursiveDOMDelete(this.editModeDiv);util.recursiveDOMDelete(this.manipulationDiv);this._cleanManipulatorHammers()}this._cleanupTemporaryNodesAndEdges();this._unbindTemporaryUIs();this._unbindTemporaryEvents();this.body.emitter.emit(\"restorePhysics\")}},{key:\"_cleanManipulatorHammers\",value:function _cleanManipulatorHammers(){if(this.manipulationHammers.length!=0){for(var i=0;i<this.manipulationHammers.length;i++){this.manipulationHammers[i].destroy()}this.manipulationHammers=[]}}},{key:\"_removeManipulationDOM\",value:function _removeManipulationDOM(){this._clean();util.recursiveDOMDelete(this.manipulationDiv);util.recursiveDOMDelete(this.editModeDiv);util.recursiveDOMDelete(this.closeDiv);if(this.manipulationDiv){this.canvas.frame.removeChild(this.manipulationDiv)}if(this.editModeDiv){this.canvas.frame.removeChild(this.editModeDiv)}if(this.closeDiv){this.canvas.frame.removeChild(this.closeDiv)}this.manipulationDiv=undefined;this.editModeDiv=undefined;this.closeDiv=undefined}},{key:\"_createSeperator\",value:function _createSeperator(){var index=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;this.manipulationDOM[\"seperatorLineDiv\"+index]=document.createElement(\"div\");this.manipulationDOM[\"seperatorLineDiv\"+index].className=\"vis-separator-line\";this.manipulationDiv.appendChild(this.manipulationDOM[\"seperatorLineDiv\"+index])}},{key:\"_createAddNodeButton\",value:function _createAddNodeButton(locale){var button=this._createButton(\"addNode\",\"vis-button vis-add\",locale[\"addNode\"]||this.options.locales[\"en\"][\"addNode\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.addNodeMode.bind(this))}},{key:\"_createAddEdgeButton\",value:function _createAddEdgeButton(locale){var button=this._createButton(\"addEdge\",\"vis-button vis-connect\",locale[\"addEdge\"]||this.options.locales[\"en\"][\"addEdge\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.addEdgeMode.bind(this))}},{key:\"_createEditNodeButton\",value:function _createEditNodeButton(locale){var button=this._createButton(\"editNode\",\"vis-button vis-edit\",locale[\"editNode\"]||this.options.locales[\"en\"][\"editNode\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.editNode.bind(this))}},{key:\"_createEditEdgeButton\",value:function _createEditEdgeButton(locale){var button=this._createButton(\"editEdge\",\"vis-button vis-edit\",locale[\"editEdge\"]||this.options.locales[\"en\"][\"editEdge\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.editEdgeMode.bind(this))}},{key:\"_createDeleteButton\",value:function _createDeleteButton(locale){var deleteBtnClass;if(this.options.rtl){deleteBtnClass=\"vis-button vis-delete-rtl\"}else{deleteBtnClass=\"vis-button vis-delete\"}var button=this._createButton(\"delete\",deleteBtnClass,locale[\"del\"]||this.options.locales[\"en\"][\"del\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.deleteSelected.bind(this))}},{key:\"_createBackButton\",value:function _createBackButton(locale){\nvar button=this._createButton(\"back\",\"vis-button vis-back\",locale[\"back\"]||this.options.locales[\"en\"][\"back\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.showManipulatorToolbar.bind(this))}},{key:\"_createButton\",value:function _createButton(id,className,label){var labelClassName=arguments.length>3&&arguments[3]!==undefined?arguments[3]:\"vis-label\";this.manipulationDOM[id+\"Div\"]=document.createElement(\"div\");this.manipulationDOM[id+\"Div\"].className=className;this.manipulationDOM[id+\"Label\"]=document.createElement(\"div\");this.manipulationDOM[id+\"Label\"].className=labelClassName;this.manipulationDOM[id+\"Label\"].innerHTML=label;this.manipulationDOM[id+\"Div\"].appendChild(this.manipulationDOM[id+\"Label\"]);return this.manipulationDOM[id+\"Div\"]}},{key:\"_createDescription\",value:function _createDescription(label){this.manipulationDiv.appendChild(this._createButton(\"description\",\"vis-button vis-none\",label))}},{key:\"_temporaryBindEvent\",value:function _temporaryBindEvent(event,newFunction){this.temporaryEventFunctions.push({event:event,boundFunction:newFunction});this.body.emitter.on(event,newFunction)}},{key:\"_temporaryBindUI\",value:function _temporaryBindUI(UIfunctionName,newFunction){if(this.body.eventListeners[UIfunctionName]!==undefined){this.temporaryUIFunctions[UIfunctionName]=this.body.eventListeners[UIfunctionName];this.body.eventListeners[UIfunctionName]=newFunction}else{throw new Error(\"This UI function does not exist. Typo? You tried: \"+UIfunctionName+\" possible are: \"+(0,_stringify2[\"default\"])((0,_keys2[\"default\"])(this.body.eventListeners)))}}},{key:\"_unbindTemporaryUIs\",value:function _unbindTemporaryUIs(){for(var functionName in this.temporaryUIFunctions){if(this.temporaryUIFunctions.hasOwnProperty(functionName)){this.body.eventListeners[functionName]=this.temporaryUIFunctions[functionName];delete this.temporaryUIFunctions[functionName]}}this.temporaryUIFunctions={}}},{key:\"_unbindTemporaryEvents\",value:function _unbindTemporaryEvents(){for(var i=0;i<this.temporaryEventFunctions.length;i++){var eventName=this.temporaryEventFunctions[i].event;var boundFunction=this.temporaryEventFunctions[i].boundFunction;this.body.emitter.off(eventName,boundFunction)}this.temporaryEventFunctions=[]}},{key:\"_bindHammerToDiv\",value:function _bindHammerToDiv(domElement,boundFunction){var hammer=new Hammer(domElement,{});hammerUtil.onTouch(hammer,boundFunction);this.manipulationHammers.push(hammer)}},{key:\"_cleanupTemporaryNodesAndEdges\",value:function _cleanupTemporaryNodesAndEdges(){for(var i=0;i<this.temporaryIds.edges.length;i++){this.body.edges[this.temporaryIds.edges[i]].disconnect();delete this.body.edges[this.temporaryIds.edges[i]];var indexTempEdge=this.body.edgeIndices.indexOf(this.temporaryIds.edges[i]);if(indexTempEdge!==-1){this.body.edgeIndices.splice(indexTempEdge,1)}}for(var _i=0;_i<this.temporaryIds.nodes.length;_i++){delete this.body.nodes[this.temporaryIds.nodes[_i]];var indexTempNode=this.body.nodeIndices.indexOf(this.temporaryIds.nodes[_i]);if(indexTempNode!==-1){this.body.nodeIndices.splice(indexTempNode,1)}}this.temporaryIds={nodes:[],edges:[]}}},{key:\"_controlNodeTouch\",value:function _controlNodeTouch(event){this.selectionHandler.unselectAll();this.lastTouch=this.body.functions.getPointer(event.center);this.lastTouch.translation=util.extend({},this.body.view.translation)}},{key:\"_controlNodeDragStart\",value:function _controlNodeDragStart(event){var pointer=this.lastTouch;var pointerObj=this.selectionHandler._pointerToPositionObject(pointer);var from=this.body.nodes[this.temporaryIds.nodes[0]];var to=this.body.nodes[this.temporaryIds.nodes[1]];var edge=this.body.edges[this.edgeBeingEditedId];this.selectedControlNode=undefined;var fromSelect=from.isOverlappingWith(pointerObj);var toSelect=to.isOverlappingWith(pointerObj);if(fromSelect===true){this.selectedControlNode=from;edge.edgeType.from=from}else if(toSelect===true){this.selectedControlNode=to;edge.edgeType.to=to}if(this.selectedControlNode!==undefined){this.selectionHandler.selectObject(this.selectedControlNode)}this.body.emitter.emit(\"_redraw\")}},{key:\"_controlNodeDrag\",value:function _controlNodeDrag(event){this.body.emitter.emit(\"disablePhysics\");var pointer=this.body.functions.getPointer(event.center);var pos=this.canvas.DOMtoCanvas(pointer);if(this.selectedControlNode!==undefined){this.selectedControlNode.x=pos.x;this.selectedControlNode.y=pos.y}else{var diffX=pointer.x-this.lastTouch.x;var diffY=pointer.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+diffX,y:this.lastTouch.translation.y+diffY}}this.body.emitter.emit(\"_redraw\")}},{key:\"_controlNodeDragEnd\",value:function _controlNodeDragEnd(event){var pointer=this.body.functions.getPointer(event.center);var pointerObj=this.selectionHandler._pointerToPositionObject(pointer);var edge=this.body.edges[this.edgeBeingEditedId];if(this.selectedControlNode===undefined){return}this.selectionHandler.unselectAll();var overlappingNodeIds=this.selectionHandler._getAllNodesOverlappingWith(pointerObj);var node=undefined;for(var i=overlappingNodeIds.length-1;i>=0;i--){if(overlappingNodeIds[i]!==this.selectedControlNode.id){node=this.body.nodes[overlappingNodeIds[i]];break}}if(node!==undefined&&this.selectedControlNode!==undefined){if(node.isCluster===true){alert(this.options.locales[this.options.locale][\"createEdgeError\"]||this.options.locales[\"en\"][\"createEdgeError\"])}else{var from=this.body.nodes[this.temporaryIds.nodes[0]];if(this.selectedControlNode.id===from.id){this._performEditEdge(node.id,edge.to.id)}else{this._performEditEdge(edge.from.id,node.id)}}}else{edge.updateEdgeType();this.body.emitter.emit(\"restorePhysics\")}this.body.emitter.emit(\"_redraw\")}},{key:\"_handleConnect\",value:function _handleConnect(event){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(event.center);this.lastTouch.translation=util.extend({},this.body.view.translation);var pointer=this.lastTouch;var node=this.selectionHandler.getNodeAt(pointer);if(node!==undefined){if(node.isCluster===true){alert(this.options.locales[this.options.locale][\"createEdgeError\"]||this.options.locales[\"en\"][\"createEdgeError\"])}else{var targetNode=this._getNewTargetNode(node.x,node.y);this.body.nodes[targetNode.id]=targetNode;this.body.nodeIndices.push(targetNode.id);var connectionEdge=this.body.functions.createEdge({id:\"connectionEdge\"+util.randomUUID(),from:node.id,to:targetNode.id,physics:false,smooth:{enabled:true,type:\"continuous\",roundness:.5}});this.body.edges[connectionEdge.id]=connectionEdge;this.body.edgeIndices.push(connectionEdge.id);this.temporaryIds.nodes.push(targetNode.id);this.temporaryIds.edges.push(connectionEdge.id)}}this.touchTime=(new Date).valueOf()}}},{key:\"_dragControlNode\",value:function _dragControlNode(event){var pointer=this.body.functions.getPointer(event.center);if(this.temporaryIds.nodes[0]!==undefined){var targetNode=this.body.nodes[this.temporaryIds.nodes[0]];targetNode.x=this.canvas._XconvertDOMtoCanvas(pointer.x);targetNode.y=this.canvas._YconvertDOMtoCanvas(pointer.y);this.body.emitter.emit(\"_redraw\")}else{var diffX=pointer.x-this.lastTouch.x;var diffY=pointer.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+diffX,y:this.lastTouch.translation.y+diffY}}}},{key:\"_finishConnect\",value:function _finishConnect(event){var pointer=this.body.functions.getPointer(event.center);var pointerObj=this.selectionHandler._pointerToPositionObject(pointer);var connectFromId=undefined;if(this.temporaryIds.edges[0]!==undefined){connectFromId=this.body.edges[this.temporaryIds.edges[0]].fromId}var overlappingNodeIds=this.selectionHandler._getAllNodesOverlappingWith(pointerObj);var node=undefined;for(var i=overlappingNodeIds.length-1;i>=0;i--){if(this.temporaryIds.nodes.indexOf(overlappingNodeIds[i])===-1){node=this.body.nodes[overlappingNodeIds[i]];break}}this._cleanupTemporaryNodesAndEdges();if(node!==undefined){if(node.isCluster===true){alert(this.options.locales[this.options.locale][\"createEdgeError\"]||this.options.locales[\"en\"][\"createEdgeError\"])}else{if(this.body.nodes[connectFromId]!==undefined&&this.body.nodes[node.id]!==undefined){this._performAddEdge(connectFromId,node.id)}}}this.body.emitter.emit(\"_redraw\")}},{key:\"_dragStartEdge\",value:function _dragStartEdge(event){var pointer=this.lastTouch;this.selectionHandler._generateClickEvent(\"dragStart\",event,pointer,undefined,true)}},{key:\"_performAddNode\",value:function _performAddNode(clickData){var _this4=this;var defaultData={id:util.randomUUID(),x:clickData.pointer.canvas.x,y:clickData.pointer.canvas.y,label:\"new\"};if(typeof this.options.addNode===\"function\"){if(this.options.addNode.length===2){this.options.addNode(defaultData,function(finalizedData){if(finalizedData!==null&&finalizedData!==undefined&&_this4.inMode===\"addNode\"){_this4.body.data.nodes.getDataSet().add(finalizedData);_this4.showManipulatorToolbar()}})}else{this.showManipulatorToolbar();throw new Error(\"The function for add does not support two arguments (data,callback)\")}}else{this.body.data.nodes.getDataSet().add(defaultData);this.showManipulatorToolbar()}}},{key:\"_performAddEdge\",value:function _performAddEdge(sourceNodeId,targetNodeId){var _this5=this;var defaultData={from:sourceNodeId,to:targetNodeId};if(typeof this.options.addEdge===\"function\"){if(this.options.addEdge.length===2){this.options.addEdge(defaultData,function(finalizedData){if(finalizedData!==null&&finalizedData!==undefined&&_this5.inMode===\"addEdge\"){_this5.body.data.edges.getDataSet().add(finalizedData);_this5.selectionHandler.unselectAll();_this5.showManipulatorToolbar()}})}else{throw new Error(\"The function for connect does not support two arguments (data,callback)\")}}else{this.body.data.edges.getDataSet().add(defaultData);this.selectionHandler.unselectAll();this.showManipulatorToolbar()}}},{key:\"_performEditEdge\",value:function _performEditEdge(sourceNodeId,targetNodeId){var _this6=this;var defaultData={id:this.edgeBeingEditedId,from:sourceNodeId,to:targetNodeId,label:this.body.data.edges._data[this.edgeBeingEditedId].label};var eeFunct=this.options.editEdge;if((typeof eeFunct===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(eeFunct))===\"object\"){eeFunct=eeFunct.editWithoutDrag}if(typeof eeFunct===\"function\"){if(eeFunct.length===2){eeFunct(defaultData,function(finalizedData){if(finalizedData===null||finalizedData===undefined||_this6.inMode!==\"editEdge\"){_this6.body.edges[defaultData.id].updateEdgeType();_this6.body.emitter.emit(\"_redraw\");_this6.showManipulatorToolbar()}else{_this6.body.data.edges.getDataSet().update(finalizedData);_this6.selectionHandler.unselectAll();_this6.showManipulatorToolbar()}})}else{throw new Error(\"The function for edit does not support two arguments (data, callback)\")}}else{this.body.data.edges.getDataSet().update(defaultData);this.selectionHandler.unselectAll();this.showManipulatorToolbar()}}}]);return ManipulationSystem}();exports[\"default\"]=ManipulationSystem},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _FloydWarshall=__webpack_require__(239);var _FloydWarshall2=_interopRequireDefault(_FloydWarshall);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var KamadaKawai=function(){function KamadaKawai(body,edgeLength,edgeStrength){(0,_classCallCheck3[\"default\"])(this,KamadaKawai);this.body=body;this.springLength=edgeLength;this.springConstant=edgeStrength;this.distanceSolver=new _FloydWarshall2[\"default\"]}(0,_createClass3[\"default\"])(KamadaKawai,[{key:\"setOptions\",value:function setOptions(options){if(options){if(options.springLength){this.springLength=options.springLength}if(options.springConstant){this.springConstant=options.springConstant}}}},{key:\"solve\",value:function solve(nodesArray,edgesArray){var ignoreClusters=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var D_matrix=this.distanceSolver.getDistances(this.body,nodesArray,edgesArray);this._createL_matrix(D_matrix);this._createK_matrix(D_matrix);this._createE_matrix();var threshold=.01;var innerThreshold=1;var iterations=0;var maxIterations=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3));var maxInnerIterations=5;var maxEnergy=1e9;var highE_nodeId=0,dE_dx=0,dE_dy=0,delta_m=0,subIterations=0;while(maxEnergy>threshold&&iterations<maxIterations){iterations+=1;var _getHighestEnergyNode2=this._getHighestEnergyNode(ignoreClusters);var _getHighestEnergyNode3=(0,_slicedToArray3[\"default\"])(_getHighestEnergyNode2,4);highE_nodeId=_getHighestEnergyNode3[0];maxEnergy=_getHighestEnergyNode3[1];dE_dx=_getHighestEnergyNode3[2];dE_dy=_getHighestEnergyNode3[3];delta_m=maxEnergy;subIterations=0;while(delta_m>innerThreshold&&subIterations<maxInnerIterations){subIterations+=1;this._moveNode(highE_nodeId,dE_dx,dE_dy);var _getEnergy2=this._getEnergy(highE_nodeId);var _getEnergy3=(0,_slicedToArray3[\"default\"])(_getEnergy2,3);delta_m=_getEnergy3[0];dE_dx=_getEnergy3[1];dE_dy=_getEnergy3[2]}}}},{key:\"_getHighestEnergyNode\",value:function _getHighestEnergyNode(ignoreClusters){var nodesArray=this.body.nodeIndices;var nodes=this.body.nodes;var maxEnergy=0;var maxEnergyNodeId=nodesArray[0];var dE_dx_max=0,dE_dy_max=0;for(var nodeIdx=0;nodeIdx<nodesArray.length;nodeIdx++){var m=nodesArray[nodeIdx];if(nodes[m].predefinedPosition===false||nodes[m].isCluster===true&&ignoreClusters===true||nodes[m].options.fixed.x===true||nodes[m].options.fixed.y===true){var _getEnergy4=this._getEnergy(m),_getEnergy5=(0,_slicedToArray3[\"default\"])(_getEnergy4,3),delta_m=_getEnergy5[0],dE_dx=_getEnergy5[1],dE_dy=_getEnergy5[2];if(maxEnergy<delta_m){maxEnergy=delta_m;maxEnergyNodeId=m;dE_dx_max=dE_dx;dE_dy_max=dE_dy}}}return[maxEnergyNodeId,maxEnergy,dE_dx_max,dE_dy_max]}},{key:\"_getEnergy\",value:function _getEnergy(m){var _E_sums$m=(0,_slicedToArray3[\"default\"])(this.E_sums[m],2),dE_dx=_E_sums$m[0],dE_dy=_E_sums$m[1];var delta_m=Math.sqrt(Math.pow(dE_dx,2)+Math.pow(dE_dy,2));return[delta_m,dE_dx,dE_dy]}},{key:\"_moveNode\",value:function _moveNode(m,dE_dx,dE_dy){var nodesArray=this.body.nodeIndices;var nodes=this.body.nodes;var d2E_dx2=0;var d2E_dxdy=0;var d2E_dy2=0;var x_m=nodes[m].x;var y_m=nodes[m].y;var km=this.K_matrix[m];var lm=this.L_matrix[m];for(var iIdx=0;iIdx<nodesArray.length;iIdx++){var i=nodesArray[iIdx];if(i!==m){var x_i=nodes[i].x;var y_i=nodes[i].y;var kmat=km[i];var lmat=lm[i];var denominator=1/Math.pow(Math.pow(x_m-x_i,2)+Math.pow(y_m-y_i,2),1.5);d2E_dx2+=kmat*(1-lmat*Math.pow(y_m-y_i,2)*denominator);d2E_dxdy+=kmat*(lmat*(x_m-x_i)*(y_m-y_i)*denominator);d2E_dy2+=kmat*(1-lmat*Math.pow(x_m-x_i,2)*denominator)}}var A=d2E_dx2,B=d2E_dxdy,C=dE_dx,D=d2E_dy2,E=dE_dy;var dy=(C/A+E/B)/(B/A-D/B);var dx=-(B*dy+C)/A;nodes[m].x+=dx;nodes[m].y+=dy;this._updateE_matrix(m)}},{key:\"_createL_matrix\",value:function _createL_matrix(D_matrix){var nodesArray=this.body.nodeIndices;var edgeLength=this.springLength;this.L_matrix=[];for(var i=0;i<nodesArray.length;i++){this.L_matrix[nodesArray[i]]={};for(var j=0;j<nodesArray.length;j++){this.L_matrix[nodesArray[i]][nodesArray[j]]=edgeLength*D_matrix[nodesArray[i]][nodesArray[j]]}}}},{key:\"_createK_matrix\",value:function _createK_matrix(D_matrix){var nodesArray=this.body.nodeIndices;var edgeStrength=this.springConstant;this.K_matrix=[];for(var i=0;i<nodesArray.length;i++){this.K_matrix[nodesArray[i]]={};for(var j=0;j<nodesArray.length;j++){this.K_matrix[nodesArray[i]][nodesArray[j]]=edgeStrength*Math.pow(D_matrix[nodesArray[i]][nodesArray[j]],-2)}}}},{key:\"_createE_matrix\",value:function _createE_matrix(){var nodesArray=this.body.nodeIndices;var nodes=this.body.nodes;this.E_matrix={};this.E_sums={};for(var mIdx=0;mIdx<nodesArray.length;mIdx++){this.E_matrix[nodesArray[mIdx]]=[]}for(var _mIdx=0;_mIdx<nodesArray.length;_mIdx++){var m=nodesArray[_mIdx];var x_m=nodes[m].x;var y_m=nodes[m].y;var dE_dx=0;var dE_dy=0;for(var iIdx=_mIdx;iIdx<nodesArray.length;iIdx++){var i=nodesArray[iIdx];if(i!==m){var x_i=nodes[i].x;var y_i=nodes[i].y;var denominator=1/Math.sqrt(Math.pow(x_m-x_i,2)+Math.pow(y_m-y_i,2));this.E_matrix[m][iIdx]=[this.K_matrix[m][i]*(x_m-x_i-this.L_matrix[m][i]*(x_m-x_i)*denominator),this.K_matrix[m][i]*(y_m-y_i-this.L_matrix[m][i]*(y_m-y_i)*denominator)];this.E_matrix[i][_mIdx]=this.E_matrix[m][iIdx];dE_dx+=this.E_matrix[m][iIdx][0];dE_dy+=this.E_matrix[m][iIdx][1]}}this.E_sums[m]=[dE_dx,dE_dy]}}},{key:\"_updateE_matrix\",value:function _updateE_matrix(m){var nodesArray=this.body.nodeIndices;var nodes=this.body.nodes;var colm=this.E_matrix[m];var kcolm=this.K_matrix[m];var lcolm=this.L_matrix[m];var x_m=nodes[m].x;var y_m=nodes[m].y;var dE_dx=0;var dE_dy=0;for(var iIdx=0;iIdx<nodesArray.length;iIdx++){var i=nodesArray[iIdx];if(i!==m){var cell=colm[iIdx];var oldDx=cell[0];var oldDy=cell[1];var x_i=nodes[i].x;var y_i=nodes[i].y;var denominator=1/Math.sqrt(Math.pow(x_m-x_i,2)+Math.pow(y_m-y_i,2));var dx=kcolm[i]*(x_m-x_i-lcolm[i]*(x_m-x_i)*denominator);var dy=kcolm[i]*(y_m-y_i-lcolm[i]*(y_m-y_i)*denominator);colm[iIdx]=[dx,dy];dE_dx+=dx;dE_dy+=dy;var sum=this.E_sums[i];sum[0]+=dx-oldDx;sum[1]+=dy-oldDy}}this.E_sums[m]=[dE_dx,dE_dy]}}]);return KamadaKawai}();exports[\"default\"]=KamadaKawai},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var FloydWarshall=function(){function FloydWarshall(){(0,_classCallCheck3[\"default\"])(this,FloydWarshall)}(0,_createClass3[\"default\"])(FloydWarshall,[{key:\"getDistances\",value:function getDistances(body,nodesArray,edgesArray){var D_matrix={};var edges=body.edges;for(var i=0;i<nodesArray.length;i++){var node=nodesArray[i];var cell={};D_matrix[node]=cell;for(var j=0;j<nodesArray.length;j++){cell[nodesArray[j]]=i==j?0:1e9}}for(var _i=0;_i<edgesArray.length;_i++){var edge=edges[edgesArray[_i]];if(edge.connected===true&&D_matrix[edge.fromId]!==undefined&&D_matrix[edge.toId]!==undefined){D_matrix[edge.fromId][edge.toId]=1;D_matrix[edge.toId][edge.fromId]=1}}var nodeCount=nodesArray.length;for(var k=0;k<nodeCount;k++){var knode=nodesArray[k];var kcolm=D_matrix[knode];for(var _i2=0;_i2<nodeCount-1;_i2++){var inode=nodesArray[_i2];var icolm=D_matrix[inode];for(var _j=_i2+1;_j<nodeCount;_j++){var jnode=nodesArray[_j];var jcolm=D_matrix[jnode];var val=Math.min(icolm[jnode],icolm[knode]+kcolm[jnode]);icolm[jnode]=val;jcolm[inode]=val}}}return D_matrix}}]);return FloydWarshall}();exports[\"default\"]=FloydWarshall}])});\n",
"type": "application/javascript",
"module-type": "library"
}
}
}
{
"tiddlers": {
"$:/help/skeeve/NewtiddlerWidget": {
"created": "20131219134809679",
"creator": "Stephan Hradek",
"modified": "20140303191836454",
"modifier": "Stephan Hradek",
"tags": "$:/HELP",
"title": "$:/help/skeeve/NewtiddlerWidget",
"type": "text/vnd.tiddlywiki",
"text": "This is a test for the highly experimental New-Tiddler-Button which allows to pre fill a skeleton tiddler with variable data.\n\nThe New-Tiddler-Button expects 2 parameters:\n\n|Parameter |Mandatory |Explanation |h\n|title |yes |the title of the new tiddler. Will get numbers appended |\n|skeleton |yes |an existing tiddler which may contain variable placeholders |\n|edit |no |This defines wether to open the new tiddler in edit mode. Must be one of \"yes\", \"no\", \"show\" or (not implemented yet) \"inline\". Defaults to \"yes\". |\n\nThe most important part lies in the skeleton! TiddlyWiki already can clone tiddlers, but you can't really prefill data of the newly created tiddler.\n\nWith `<$newtiddler>` you can put placeholders of the form `$(variable)$` ''anywhere'' in the tiddler and they will be replaced by the values of the variables set with the `<$set>` or `<$let>` widget. Please note: The placeholders can be ''anywhere''! In the tiddlers body, in fields, types, you name it…\n\nThe example skeleton used here looks like this:\n\n|Property |Content |h\n|title |skeleton 1 |\n|text |This is some test: $(placeholder)$ |\n|tags |$(tag1}$ |\n|field1 |$(f1)$ |\n|field2 |$(f2)$ |\n\nIf we now put this into our tiddler:\n\n```\n<$set name=\"f1\" value=<<qualify \"unique\">> >\n<$set name=\"f2\" value=\"field-2\">\n<$set name=\"placeholder\" value=\"pl1\">\n<$set name=\"tag1\" value=\"testtag\">\n<$newtiddler title=\"test\" skeleton=\"$:/plugins/skeeve/newtiddler/SkeletonExample\">Create</$newtiddler>\n</$set>\n</$set>\n</$set>\n</$set>\n```\n\nWe get a <$set name=\"f1\" value=<<qualify \"unique\">> ><$set name=\"f2\" value=\"field-2\"><$set name=\"placeholder\" value=\"pl1\"><$set name=\"tag1\" value=\"testtag\"><$newtiddler title=\"test\" skeleton=\"$:/plugins/skeeve/newtiddler/SkeletonExample\">Create</$newtiddler></$set></$set></$set></$set> button.\n\nClicking it, will open a new tiddler with some values pre-filled."
},
"$:/plugins/skeeve/newtiddler/SkeletonExample": {
"created": "20131218133637784",
"creator": "Stephan Hradek",
"field1": "$(f1)$",
"field2": "$(f2)$",
"modified": "20140303191730416",
"modifier": "Stephan Hradek",
"tags": "$(tag1)$",
"title": "$:/plugins/skeeve/newtiddler/SkeletonExample",
"type": "text/vnd.tiddlywiki",
"text": "This is some test: $(placeholder)$"
},
"$:/plugins/skeeve/newtiddler.js": {
"text": "/*\\\ntitle: $:/plugins/skeeve/newtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nnewtiddler widget\n\n```\n<$newtiddler title=\"name\" skeleton=\"name\">Buttontext</$newtiddler>\n```\n\nThe skeleton tiddler may contain variables which are replaced during creation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NewtiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNewtiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNewtiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"button\");\n\t// Assign classes\n\tdomNode.className = this.newtiddlerClass;\n\t// Assign styles\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"}\n\t]);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nNewtiddlerWidget.prototype.handleClickEvent = function(event) {\n\tvar skeleton = this.wiki.getTiddlerAsJson(this.newtiddlerSkeleton);\n\tvar skeletonClone = JSON.parse(this.substituteVariableReferences(skeleton));\n\tvar basetitle = this.newtiddlerTitle;\n\tvar title = basetitle;\n\tfor(var t=1; this.wiki.tiddlerExists(title); t++) {\n\t\ttitle = basetitle + \" \" + t;\n\t}\n\tskeletonClone.title = title;\n\tvar created = this.wiki.getCreationFields();\n\tfor(var creationField in created) {\n\t\tskeletonClone[creationField] = created[creationField];\n\t}\n\tvar modified = this.wiki.getModificationFields();\n\tfor(var modificationField in modified) {\n\t\tskeletonClone[modificationField] = modified[modificationField];\n\t}\n\tthis.wiki.addTiddler(skeletonClone);\n\tswitch(this.newtiddlerEdit) {\n\tcase \"show\":\n\tcase \"yes\":\n\t\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\t\tthis.dispatchEvent({\n\t\t\ttype: \"tw-navigate\",\n\t\t\tnavigateTo: title,\n\t\t\tnavigateFromTitle: this.getVariable(\"currentTiddler\"),\n\t\t\tnavigateFromNode: this,\n\t\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t\t}\n\t\t});\n\t\tif(this.newtiddlerEdit === \"yes\") {\n\t\t\tthis.dispatchEvent({type: \"tw-edit-tiddler\", tiddlerTitle: title});\n\t\t}\n\t\tbreak;\n\tcase \"no\":\n\t\tbreak;\n\tcase \"inline\":\n\t\t// not implemented yet\n\t\tbreak;\n\t}\n};\n\n\n/*\nCompute the internal state of the widget\n*/\nNewtiddlerWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.newtiddlerTitle = this.getAttribute(\"title\");\n\tthis.newtiddlerSkeleton = this.getAttribute(\"skeleton\");\n\tthis.newtiddlerEdit = this.getAttribute(\"edit\", \"yes\");\n\tthis.newtiddlerClass = this.getAttribute(\"class\",\"\");\n\tthis.newtiddlerStyle = this.getAttribute(\"style\");\n\tif(this.newtiddlerClass != \"\") {\n\t\tthis.newtiddlerClass = \" \" + this.newtiddlerClass;\n\t}\n\tthis.newtiddlerClass = \"tw-newtiddler-button\" + this.newtiddlerClass;\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNewtiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.title || changedAttributes.skeleton || changedAttributes.class || changedAttributes.style) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.newtiddler = NewtiddlerWidget;\n\n})();\n",
"title": "$:/plugins/skeeve/newtiddler.js",
"type": "application/javascript",
"module-type": "widget"
}
}
}
/*\
title: $:/plugins/skeeve/newtiddler.js
type: application/javascript
module-type: widget
newtiddler widget
```
<$newtiddler title="name" skeleton="name">Buttontext</$newtiddler>
```
The skeleton tiddler may contain variables which are replaced during creation
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var Widget = require("$:/core/modules/widgets/widget.js").widget;
var NewtiddlerWidget = function(parseTreeNode,options) {
this.initialise(parseTreeNode,options);
};
/*
Inherit from the base widget class
*/
NewtiddlerWidget.prototype = new Widget();
/*
Render this widget into the DOM
*/
NewtiddlerWidget.prototype.render = function(parent,nextSibling) {
var self = this;
// Remember parent
this.parentDomNode = parent;
// Compute attributes and execute state
this.computeAttributes();
this.execute();
// Create element
var domNode = this.document.createElement("button");
// Assign classes
domNode.className = this.newtiddlerClass;
// Assign styles
if(this.style) {
domNode.setAttribute("style",this.style);
}
// Add a click event handler
$tw.utils.addEventListeners(domNode,[
{name: "click", handlerObject: this, handlerMethod: "handleClickEvent"}
]);
// Insert element
parent.insertBefore(domNode,nextSibling);
this.renderChildren(domNode,null);
this.domNodes.push(domNode);
};
NewtiddlerWidget.prototype.handleClickEvent = function(event) {
var skeleton = this.wiki.getTiddlerAsJson(this.newtiddlerSkeleton);
var skeletonClone = JSON.parse(this.substituteVariableReferences(skeleton));
var basetitle = this.newtiddlerTitle;
var title = basetitle;
for(var t=1; this.wiki.tiddlerExists(title); t++) {
title = basetitle + " " + t;
}
skeletonClone.title = title;
for(var modificationField in this.wiki.getModificationFields()) {
delete skeletonClone[modificationField];
}
var created = this.wiki.getCreationFields();
for(var creationField in created) {
skeletonClone[modificationField] = created[creationField];
}
this.wiki.addTiddler(skeletonClone);
switch(this.newtiddlerEdit) {
case "show":
case "yes":
var bounds = this.domNodes[0].getBoundingClientRect();
this.dispatchEvent({
type: "tm-navigate",
navigateTo: title,
navigateFromTitle: this.getVariable("currentTiddler"),
navigateFromNode: this,
navigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height
}
});
if(this.newtiddlerEdit === "yes") {
this.dispatchEvent({type: "tm-edit-tiddler", tiddlerTitle: title});
}
break;
case "no":
break;
case "inline":
// not implemented yet
break;
}
};
/*
Compute the internal state of the widget
*/
NewtiddlerWidget.prototype.execute = function() {
// Get attributes
this.newtiddlerTitle = this.getAttribute("title");
this.newtiddlerSkeleton = this.getAttribute("skeleton");
this.newtiddlerEdit = this.getAttribute("edit", "yes");
this.newtiddlerClass = this.getAttribute("class","");
this.newtiddlerStyle = this.getAttribute("style");
if(this.newtiddlerClass != "") {
this.newtiddlerClass = " " + this.newtiddlerClass;
}
this.newtiddlerClass = "tm-newtiddler-button" + this.newtiddlerClass;
// Make child widgets
this.makeChildWidgets();
};
/*
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
*/
NewtiddlerWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes();
if(changedAttributes.title || changedAttributes.skeleton || changedAttributes.class || changedAttributes.style) {
this.refreshSelf();
return true;
}
return this.refreshChildren(changedTiddlers);
};
exports.newtiddler = NewtiddlerWidget;
})();
{
"tiddlers": {
"$:/plugins/tiddlywiki/help/HelpPanel": {
"title": "$:/plugins/tiddlywiki/help/HelpPanel",
"tags": "$:/tags/PageTemplate",
"text": "<$reveal type=\"match\" state=\"$:/config/ShowHelp\" text=\"yes\">\n<div class=\"tc-help-panel\">\n<div class=\"tc-tiddler-controls\">\n<$button set=\"$:/config/ShowHelp\" setTo=\"no\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button> ''Help Panel''\n</div>\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/HelpPanel]!has[draft.of]]\" \"$:/plugins/tiddlywiki/help/HelpPanel/Support\" \"$:/state/tab/help\">>\n</div>\n</$reveal>\n\n"
},
"$:/config/Help/CurrentVideo": {
"title": "$:/config/Help/CurrentVideo",
"text": "$:/plugins/tiddlywiki/help/Videos/Introduction"
},
"$:/config/ShowHelp": {
"title": "$:/config/ShowHelp",
"text": "no"
},
"$:/plugins/help/Buttons/help": {
"title": "$:/plugins/help/Buttons/help",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/help}} {{$:/language/Buttons/Help/Caption}}",
"description": "{{$:/language/Buttons/Help/Hint}}",
"text": "\\define help-inner()\n<$reveal type=\"match\" state=\"$:/config/ShowHelp\" text=\"yes\">\n<$button set=\"$:/config/ShowHelp\" setTo=\"no\" tooltip={{$:/language/Buttons/Help/Hint}} aria-label={{$:/language/Buttons/Help/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ tc-selected\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/help}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Help/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/config/ShowHelp\" text=\"yes\">\n<$button set=\"$:/config/ShowHelp\" setTo=\"yes\" tooltip={{$:/language/Buttons/Help/Hint}} aria-label={{$:/language/Buttons/Help/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/help}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Help/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n\\end\n<<help-inner>>\n"
},
"$:/plugins/tiddlywiki/help/readme": {
"title": "$:/plugins/tiddlywiki/help/readme",
"text": "This plugin provides an overlay help panel at the bottom right of the window.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/help]]\n"
},
"$:/plugins/tiddlywiki/help/styles": {
"title": "$:/plugins/tiddlywiki/help/styles",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-help-panel {\n\tposition: fixed;\n\tbottom: 0;\n\tright: 0;\n\twidth: 310px;\n\theight: 400px;\n\toverflow: scroll;\n\t-webkit-overflow-scrolling: touch;\n\t<<box-shadow \"0px 0px 5px rgba(0, 0, 0, 0.3)\">>\n\tborder: 1px solid <<colour tiddler-border>>;\n\tbackground: <<colour tiddler-background>>;\n\tpadding: 1em;\n\tmargin: 0.5em;\n\tz-index: 1000;\n}\n\ndl.tc-help-cheatsheet {\n\toverflow: hidden;\n}\n\ndl.tc-help-cheatsheet .red {\n\tcolor: red;\n}\n\n.tc-help-cheatsheet > dt {\n\tdisplay: block;\n\tfloat: left;\n\tclear: left;\n\tmargin: 2% 1em 0 0;\n\tpadding;\n\tfont-weight: normal;\n\twidth: 45%;\n}\n\n.tc-help-cheatsheet > dt > pre {\n\tmargin: 0;\n}\n\n.tc-help-cheatsheet > dd {\n\tdisplay: block;\n\tfloat: left;\n\twidth: 45%;\n\tmargin: 1em 0 0 0;\n\tpadding: 0;\n}\n\n.tc-help-cheatsheet > dd > p,\n.tc-help-cheatsheet > dd > h1,\n.tc-help-cheatsheet > dd > pre,\n.tc-help-cheatsheet > dd > ul,\n.tc-help-cheatsheet > dd > ol,\n.tc-help-cheatsheet > dd > dl,\n.tc-help-cheatsheet > dd > table,\n.tc-help-cheatsheet > dd > blockquote,\n.tc-help-cheatsheet > dd > blockquote >p {\n\tmargin: 0;\n}\n\n.tc-help-cheatsheet .tc-image {\n\twidth: 16px;\n}\n"
},
"$:/plugins/tiddlywiki/help/HelpPanel/Support": {
"title": "$:/plugins/tiddlywiki/help/HelpPanel/Support",
"tags": "$:/tags/HelpPanel",
"caption": "Support",
"text": "~TiddlyWiki is an open source project with a vibrant community of users and developers. We're always happy to help new users get the most from ~TiddlyWiki.\n\nJoin the ~TiddlyWiki mailing list:\n\nhttp://groups.google.com/group/TiddlyWiki\n\nPost bug reports to the ~TiddlyWiki ~GitHub repository:\n\nhttps://github.com/Jermolene/TiddlyWiki5\n"
},
"$:/plugins/tiddlywiki/help/HelpPanel/Videos": {
"title": "$:/plugins/tiddlywiki/help/HelpPanel/Videos",
"tags": "$:/tags/HelpPanel",
"caption": "Videos",
"text": "\\define show-video-inner(embed)\n<iframe width=\"280\" height=\"157\" src=\"\"\"http://www.youtube.com/embed/$embed$?autoplay=0&showinfo=0&theme=light&rel=0&modestbranding=1&autohide=1\"\"\" frameborder=\"0\" allowfullscreen></iframe>\n\\end\n\n\\define show-video(title)\n<$macrocall $name=\"show-video-inner\" embed={{$title$!!embed}}/>\n<p>{{$title$!!text}}</p>\n\\end\n\n<div class=\"tc-help-panel-inner\">\n\nChoose video: <$select tiddler=\"$:/config/Help/CurrentVideo\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/HelpPanel/Videos]]\">\n<option value=<<currentTiddler>>><$view field=\"caption\"/></option>\n</$list>\n</$select>\n\n<$macrocall $name=\"show-video\" title={{$:/config/Help/CurrentVideo}}>>\n\n</div>\n"
},
"$:/plugins/tiddlywiki/help/Videos/FirefoxAndroid": {
"title": "$:/plugins/tiddlywiki/help/Videos/FirefoxAndroid",
"tags": "$:/tags/HelpPanel/Videos",
"caption": "Firefox for Android",
"embed": "iikkv9orGGI",
"text": "How to get started with using TiddlyWiki as a standalone HTML file with the TiddlyFox add-on for Firefox for Android.\n"
},
"$:/plugins/tiddlywiki/help/Videos/GettingStarted": {
"title": "$:/plugins/tiddlywiki/help/Videos/GettingStarted",
"tags": "$:/tags/HelpPanel/Videos",
"caption": "GettingStarted",
"embed": "1g66s7UbyuU",
"text": "How to get started with using TiddlyWiki as a standalone HTML file.\n"
},
"$:/plugins/tiddlywiki/help/Videos/Introduction": {
"title": "$:/plugins/tiddlywiki/help/Videos/Introduction",
"tags": "$:/tags/HelpPanel/Videos",
"caption": "Introduction",
"embed": "KtCUr83XgyE",
"text": "An introduction to the concepts of TiddlyWiki.\n"
},
"$:/plugins/tiddlywiki/help/Videos/TiddlyDesktop": {
"title": "$:/plugins/tiddlywiki/help/Videos/TiddlyDesktop",
"tags": "$:/tags/HelpPanel/Videos",
"caption": "TiddlyDesktop",
"embed": "i3Bggkm7paA",
"text": "Using TiddlyDesktop, the custom desktop TiddlyWiki application for Windows, OS X and Linux.\n"
}
}
}
{
"tiddlers": {
"$:/config/markdown/dialect": {
"title": "$:/config/markdown/dialect",
"text": "Gruber"
},
"$:/language/Docs/Types/text/x-markdown": {
"title": "$:/language/Docs/Types/text/x-markdown",
"description": "Markdown",
"name": "text/x-markdown"
},
"$:/plugins/tiddlywiki/markdown/markdown.js": {
"type": "application/javascript",
"title": "$:/plugins/tiddlywiki/markdown/markdown.js",
"module-type": "library",
"text": "// Released under MIT license\n// Copyright (c) 2009-2010 Dominic Baggott\n// Copyright (c) 2009-2010 Ash Berlin\n// Copyright (c) 2011 Christoph Dorn <christoph@christophdorn.com> (http://www.christophdorn.com)\n\n/*jshint browser:true, devel:true */\n\n(function( expose ) {\n\n/**\n * class Markdown\n *\n * Markdown processing in Javascript done right. We have very particular views\n * on what constitutes 'right' which include:\n *\n * - produces well-formed HTML (this means that em and strong nesting is\n * important)\n *\n * - has an intermediate representation to allow processing of parsed data (We\n * in fact have two, both as [JsonML]: a markdown tree and an HTML tree).\n *\n * - is easily extensible to add new dialects without having to rewrite the\n * entire parsing mechanics\n *\n * - has a good test suite\n *\n * This implementation fulfills all of these (except that the test suite could\n * do with expanding to automatically run all the fixtures from other Markdown\n * implementations.)\n *\n * ##### Intermediate Representation\n *\n * *TODO* Talk about this :) Its JsonML, but document the node names we use.\n *\n * [JsonML]: http://jsonml.org/ \"JSON Markup Language\"\n **/\nvar Markdown = expose.Markdown = function(dialect) {\n switch (typeof dialect) {\n case \"undefined\":\n this.dialect = Markdown.dialects.Gruber;\n break;\n case \"object\":\n this.dialect = dialect;\n break;\n default:\n if ( dialect in Markdown.dialects ) {\n this.dialect = Markdown.dialects[dialect];\n }\n else {\n throw new Error(\"Unknown Markdown dialect '\" + String(dialect) + \"'\");\n }\n break;\n }\n this.em_state = [];\n this.strong_state = [];\n this.debug_indent = \"\";\n};\n\n/**\n * parse( markdown, [dialect] ) -> JsonML\n * - markdown (String): markdown string to parse\n * - dialect (String | Dialect): the dialect to use, defaults to gruber\n *\n * Parse `markdown` and return a markdown document as a Markdown.JsonML tree.\n **/\nexpose.parse = function( source, dialect ) {\n // dialect will default if undefined\n var md = new Markdown( dialect );\n return md.toTree( source );\n};\n\n/**\n * toHTML( markdown, [dialect] ) -> String\n * toHTML( md_tree ) -> String\n * - markdown (String): markdown string to parse\n * - md_tree (Markdown.JsonML): parsed markdown tree\n *\n * Take markdown (either as a string or as a JsonML tree) and run it through\n * [[toHTMLTree]] then turn it into a well-formated HTML fragment.\n **/\nexpose.toHTML = function toHTML( source , dialect , options ) {\n var input = expose.toHTMLTree( source , dialect , options );\n\n return expose.renderJsonML( input );\n};\n\n/**\n * toHTMLTree( markdown, [dialect] ) -> JsonML\n * toHTMLTree( md_tree ) -> JsonML\n * - markdown (String): markdown string to parse\n * - dialect (String | Dialect): the dialect to use, defaults to gruber\n * - md_tree (Markdown.JsonML): parsed markdown tree\n *\n * Turn markdown into HTML, represented as a JsonML tree. If a string is given\n * to this function, it is first parsed into a markdown tree by calling\n * [[parse]].\n **/\nexpose.toHTMLTree = function toHTMLTree( input, dialect , options ) {\n // convert string input to an MD tree\n if ( typeof input ===\"string\" ) input = this.parse( input, dialect );\n\n // Now convert the MD tree to an HTML tree\n\n // remove references from the tree\n var attrs = extract_attr( input ),\n refs = {};\n\n if ( attrs && attrs.references ) {\n refs = attrs.references;\n }\n\n var html = convert_tree_to_html( input, refs , options );\n merge_text_nodes( html );\n return html;\n};\n\n// For Spidermonkey based engines\nfunction mk_block_toSource() {\n return \"Markdown.mk_block( \" +\n uneval(this.toString()) +\n \", \" +\n uneval(this.trailing) +\n \", \" +\n uneval(this.lineNumber) +\n \" )\";\n}\n\n// node\nfunction mk_block_inspect() {\n var util = require(\"util\");\n return \"Markdown.mk_block( \" +\n util.inspect(this.toString()) +\n \", \" +\n util.inspect(this.trailing) +\n \", \" +\n util.inspect(this.lineNumber) +\n \" )\";\n\n}\n\nvar mk_block = Markdown.mk_block = function(block, trail, line) {\n // Be helpful for default case in tests.\n if ( arguments.length == 1 ) trail = \"\\n\\n\";\n\n var s = new String(block);\n s.trailing = trail;\n // To make it clear its not just a string\n s.inspect = mk_block_inspect;\n s.toSource = mk_block_toSource;\n\n if ( line != undefined )\n s.lineNumber = line;\n\n return s;\n};\n\nfunction count_lines( str ) {\n var n = 0, i = -1;\n while ( ( i = str.indexOf(\"\\n\", i + 1) ) !== -1 ) n++;\n return n;\n}\n\n// Internal - split source into rough blocks\nMarkdown.prototype.split_blocks = function splitBlocks( input, startLine ) {\n input = input.replace(/(\\r\\n|\\n|\\r)/g, \"\\n\");\n // [\\s\\S] matches _anything_ (newline or space)\n // [^] is equivalent but doesn't work in IEs.\n var re = /([\\s\\S]+?)($|\\n#|\\n(?:\\s*\\n|$)+)/g,\n blocks = [],\n m;\n\n var line_no = 1;\n\n if ( ( m = /^(\\s*\\n)/.exec(input) ) != null ) {\n // skip (but count) leading blank lines\n line_no += count_lines( m[0] );\n re.lastIndex = m[0].length;\n }\n\n while ( ( m = re.exec(input) ) !== null ) {\n if (m[2] == \"\\n#\") {\n m[2] = \"\\n\";\n re.lastIndex--;\n }\n blocks.push( mk_block( m[1], m[2], line_no ) );\n line_no += count_lines( m[0] );\n }\n\n return blocks;\n};\n\n/**\n * Markdown#processBlock( block, next ) -> undefined | [ JsonML, ... ]\n * - block (String): the block to process\n * - next (Array): the following blocks\n *\n * Process `block` and return an array of JsonML nodes representing `block`.\n *\n * It does this by asking each block level function in the dialect to process\n * the block until one can. Succesful handling is indicated by returning an\n * array (with zero or more JsonML nodes), failure by a false value.\n *\n * Blocks handlers are responsible for calling [[Markdown#processInline]]\n * themselves as appropriate.\n *\n * If the blocks were split incorrectly or adjacent blocks need collapsing you\n * can adjust `next` in place using shift/splice etc.\n *\n * If any of this default behaviour is not right for the dialect, you can\n * define a `__call__` method on the dialect that will get invoked to handle\n * the block processing.\n */\nMarkdown.prototype.processBlock = function processBlock( block, next ) {\n var cbs = this.dialect.block,\n ord = cbs.__order__;\n\n if ( \"__call__\" in cbs ) {\n return cbs.__call__.call(this, block, next);\n }\n\n for ( var i = 0; i < ord.length; i++ ) {\n //D:this.debug( \"Testing\", ord[i] );\n var res = cbs[ ord[i] ].call( this, block, next );\n if ( res ) {\n //D:this.debug(\" matched\");\n if ( !isArray(res) || ( res.length > 0 && !( isArray(res[0]) ) ) )\n this.debug(ord[i], \"didn't return a proper array\");\n //D:this.debug( \"\" );\n return res;\n }\n }\n\n // Uhoh! no match! Should we throw an error?\n return [];\n};\n\nMarkdown.prototype.processInline = function processInline( block ) {\n return this.dialect.inline.__call__.call( this, String( block ) );\n};\n\n/**\n * Markdown#toTree( source ) -> JsonML\n * - source (String): markdown source to parse\n *\n * Parse `source` into a JsonML tree representing the markdown document.\n **/\n// custom_tree means set this.tree to `custom_tree` and restore old value on return\nMarkdown.prototype.toTree = function toTree( source, custom_root ) {\n var blocks = source instanceof Array ? source : this.split_blocks( source );\n\n // Make tree a member variable so its easier to mess with in extensions\n var old_tree = this.tree;\n try {\n this.tree = custom_root || this.tree || [ \"markdown\" ];\n\n blocks:\n while ( blocks.length ) {\n var b = this.processBlock( blocks.shift(), blocks );\n\n // Reference blocks and the like won't return any content\n if ( !b.length ) continue blocks;\n\n this.tree.push.apply( this.tree, b );\n }\n return this.tree;\n }\n finally {\n if ( custom_root ) {\n this.tree = old_tree;\n }\n }\n};\n\n// Noop by default\nMarkdown.prototype.debug = function () {\n var args = Array.prototype.slice.call( arguments);\n args.unshift(this.debug_indent);\n if ( typeof print !== \"undefined\" )\n print.apply( print, args );\n if ( typeof console !== \"undefined\" && typeof console.log !== \"undefined\" )\n console.log.apply( null, args );\n}\n\nMarkdown.prototype.loop_re_over_block = function( re, block, cb ) {\n // Dont use /g regexps with this\n var m,\n b = block.valueOf();\n\n while ( b.length && (m = re.exec(b) ) != null ) {\n b = b.substr( m[0].length );\n cb.call(this, m);\n }\n return b;\n};\n\n/**\n * Markdown.dialects\n *\n * Namespace of built-in dialects.\n **/\nMarkdown.dialects = {};\n\n/**\n * Markdown.dialects.Gruber\n *\n * The default dialect that follows the rules set out by John Gruber's\n * markdown.pl as closely as possible. Well actually we follow the behaviour of\n * that script which in some places is not exactly what the syntax web page\n * says.\n **/\nMarkdown.dialects.Gruber = {\n block: {\n atxHeader: function atxHeader( block, next ) {\n var m = block.match( /^(#{1,6})\\s*(.*?)\\s*#*\\s*(?:\\n|$)/ );\n\n if ( !m ) return undefined;\n\n var header = [ \"header\", { level: m[ 1 ].length } ];\n Array.prototype.push.apply(header, this.processInline(m[ 2 ]));\n\n if ( m[0].length < block.length )\n next.unshift( mk_block( block.substr( m[0].length ), block.trailing, block.lineNumber + 2 ) );\n\n return [ header ];\n },\n\n setextHeader: function setextHeader( block, next ) {\n var m = block.match( /^(.*)\\n([-=])\\2\\2+(?:\\n|$)/ );\n\n if ( !m ) return undefined;\n\n var level = ( m[ 2 ] === \"=\" ) ? 1 : 2;\n var header = [ \"header\", { level : level }, m[ 1 ] ];\n\n if ( m[0].length < block.length )\n next.unshift( mk_block( block.substr( m[0].length ), block.trailing, block.lineNumber + 2 ) );\n\n return [ header ];\n },\n\n code: function code( block, next ) {\n // | Foo\n // |bar\n // should be a code block followed by a paragraph. Fun\n //\n // There might also be adjacent code block to merge.\n\n var ret = [],\n re = /^(?: {0,3}\\t| {4})(.*)\\n?/,\n lines;\n\n // 4 spaces + content\n if ( !block.match( re ) ) return undefined;\n\n block_search:\n do {\n // Now pull out the rest of the lines\n var b = this.loop_re_over_block(\n re, block.valueOf(), function( m ) { ret.push( m[1] ); } );\n\n if ( b.length ) {\n // Case alluded to in first comment. push it back on as a new block\n next.unshift( mk_block(b, block.trailing) );\n break block_search;\n }\n else if ( next.length ) {\n // Check the next block - it might be code too\n if ( !next[0].match( re ) ) break block_search;\n\n // Pull how how many blanks lines follow - minus two to account for .join\n ret.push ( block.trailing.replace(/[^\\n]/g, \"\").substring(2) );\n\n block = next.shift();\n }\n else {\n break block_search;\n }\n } while ( true );\n\n return [ [ \"code_block\", ret.join(\"\\n\") ] ];\n },\n\n horizRule: function horizRule( block, next ) {\n // this needs to find any hr in the block to handle abutting blocks\n var m = block.match( /^(?:([\\s\\S]*?)\\n)?[ \\t]*([-_*])(?:[ \\t]*\\2){2,}[ \\t]*(?:\\n([\\s\\S]*))?$/ );\n\n if ( !m ) {\n return undefined;\n }\n\n var jsonml = [ [ \"hr\" ] ];\n\n // if there's a leading abutting block, process it\n if ( m[ 1 ] ) {\n jsonml.unshift.apply( jsonml, this.processBlock( m[ 1 ], [] ) );\n }\n\n // if there's a trailing abutting block, stick it into next\n if ( m[ 3 ] ) {\n next.unshift( mk_block( m[ 3 ] ) );\n }\n\n return jsonml;\n },\n\n // There are two types of lists. Tight and loose. Tight lists have no whitespace\n // between the items (and result in text just in the <li>) and loose lists,\n // which have an empty line between list items, resulting in (one or more)\n // paragraphs inside the <li>.\n //\n // There are all sorts weird edge cases about the original markdown.pl's\n // handling of lists:\n //\n // * Nested lists are supposed to be indented by four chars per level. But\n // if they aren't, you can get a nested list by indenting by less than\n // four so long as the indent doesn't match an indent of an existing list\n // item in the 'nest stack'.\n //\n // * The type of the list (bullet or number) is controlled just by the\n // first item at the indent. Subsequent changes are ignored unless they\n // are for nested lists\n //\n lists: (function( ) {\n // Use a closure to hide a few variables.\n var any_list = \"[*+-]|\\\\d+\\\\.\",\n bullet_list = /[*+-]/,\n number_list = /\\d+\\./,\n // Capture leading indent as it matters for determining nested lists.\n is_list_re = new RegExp( \"^( {0,3})(\" + any_list + \")[ \\t]+\" ),\n indent_re = \"(?: {0,3}\\\\t| {4})\";\n\n // TODO: Cache this regexp for certain depths.\n // Create a regexp suitable for matching an li for a given stack depth\n function regex_for_depth( depth ) {\n\n return new RegExp(\n // m[1] = indent, m[2] = list_type\n \"(?:^(\" + indent_re + \"{0,\" + depth + \"} {0,3})(\" + any_list + \")\\\\s+)|\" +\n // m[3] = cont\n \"(^\" + indent_re + \"{0,\" + (depth-1) + \"}[ ]{0,4})\"\n );\n }\n function expand_tab( input ) {\n return input.replace( / {0,3}\\t/g, \" \" );\n }\n\n // Add inline content `inline` to `li`. inline comes from processInline\n // so is an array of content\n function add(li, loose, inline, nl) {\n if ( loose ) {\n li.push( [ \"para\" ].concat(inline) );\n return;\n }\n // Hmmm, should this be any block level element or just paras?\n var add_to = li[li.length -1] instanceof Array && li[li.length - 1][0] == \"para\"\n ? li[li.length -1]\n : li;\n\n // If there is already some content in this list, add the new line in\n if ( nl && li.length > 1 ) inline.unshift(nl);\n\n for ( var i = 0; i < inline.length; i++ ) {\n var what = inline[i],\n is_str = typeof what == \"string\";\n if ( is_str && add_to.length > 1 && typeof add_to[add_to.length-1] == \"string\" ) {\n add_to[ add_to.length-1 ] += what;\n }\n else {\n add_to.push( what );\n }\n }\n }\n\n // contained means have an indent greater than the current one. On\n // *every* line in the block\n function get_contained_blocks( depth, blocks ) {\n\n var re = new RegExp( \"^(\" + indent_re + \"{\" + depth + \"}.*?\\\\n?)*$\" ),\n replace = new RegExp(\"^\" + indent_re + \"{\" + depth + \"}\", \"gm\"),\n ret = [];\n\n while ( blocks.length > 0 ) {\n if ( re.exec( blocks[0] ) ) {\n var b = blocks.shift(),\n // Now remove that indent\n x = b.replace( replace, \"\");\n\n ret.push( mk_block( x, b.trailing, b.lineNumber ) );\n }\n else {\n break;\n }\n }\n return ret;\n }\n\n // passed to stack.forEach to turn list items up the stack into paras\n function paragraphify(s, i, stack) {\n var list = s.list;\n var last_li = list[list.length-1];\n\n if ( last_li[1] instanceof Array && last_li[1][0] == \"para\" ) {\n return;\n }\n if ( i + 1 == stack.length ) {\n // Last stack frame\n // Keep the same array, but replace the contents\n last_li.push( [\"para\"].concat( last_li.splice(1, last_li.length - 1) ) );\n }\n else {\n var sublist = last_li.pop();\n last_li.push( [\"para\"].concat( last_li.splice(1, last_li.length - 1) ), sublist );\n }\n }\n\n // The matcher function\n return function( block, next ) {\n var m = block.match( is_list_re );\n if ( !m ) return undefined;\n\n function make_list( m ) {\n var list = bullet_list.exec( m[2] )\n ? [\"bulletlist\"]\n : [\"numberlist\"];\n\n stack.push( { list: list, indent: m[1] } );\n return list;\n }\n\n\n var stack = [], // Stack of lists for nesting.\n list = make_list( m ),\n last_li,\n loose = false,\n ret = [ stack[0].list ],\n i;\n\n // Loop to search over block looking for inner block elements and loose lists\n loose_search:\n while ( true ) {\n // Split into lines preserving new lines at end of line\n var lines = block.split( /(?=\\n)/ );\n\n // We have to grab all lines for a li and call processInline on them\n // once as there are some inline things that can span lines.\n var li_accumulate = \"\";\n\n // Loop over the lines in this block looking for tight lists.\n tight_search:\n for ( var line_no = 0; line_no < lines.length; line_no++ ) {\n var nl = \"\",\n l = lines[line_no].replace(/^\\n/, function(n) { nl = n; return \"\"; });\n\n // TODO: really should cache this\n var line_re = regex_for_depth( stack.length );\n\n m = l.match( line_re );\n //print( \"line:\", uneval(l), \"\\nline match:\", uneval(m) );\n\n // We have a list item\n if ( m[1] !== undefined ) {\n // Process the previous list item, if any\n if ( li_accumulate.length ) {\n add( last_li, loose, this.processInline( li_accumulate ), nl );\n // Loose mode will have been dealt with. Reset it\n loose = false;\n li_accumulate = \"\";\n }\n\n m[1] = expand_tab( m[1] );\n var wanted_depth = Math.floor(m[1].length/4)+1;\n //print( \"want:\", wanted_depth, \"stack:\", stack.length);\n if ( wanted_depth > stack.length ) {\n // Deep enough for a nested list outright\n //print ( \"new nested list\" );\n list = make_list( m );\n last_li.push( list );\n last_li = list[1] = [ \"listitem\" ];\n }\n else {\n // We aren't deep enough to be strictly a new level. This is\n // where Md.pl goes nuts. If the indent matches a level in the\n // stack, put it there, else put it one deeper then the\n // wanted_depth deserves.\n var found = false;\n for ( i = 0; i < stack.length; i++ ) {\n if ( stack[ i ].indent != m[1] ) continue;\n list = stack[ i ].list;\n stack.splice( i+1, stack.length - (i+1) );\n found = true;\n break;\n }\n\n if (!found) {\n //print(\"not found. l:\", uneval(l));\n wanted_depth++;\n if ( wanted_depth <= stack.length ) {\n stack.splice(wanted_depth, stack.length - wanted_depth);\n //print(\"Desired depth now\", wanted_depth, \"stack:\", stack.length);\n list = stack[wanted_depth-1].list;\n //print(\"list:\", uneval(list) );\n }\n else {\n //print (\"made new stack for messy indent\");\n list = make_list(m);\n last_li.push(list);\n }\n }\n\n //print( uneval(list), \"last\", list === stack[stack.length-1].list );\n last_li = [ \"listitem\" ];\n list.push(last_li);\n } // end depth of shenegains\n nl = \"\";\n }\n\n // Add content\n if ( l.length > m[0].length ) {\n li_accumulate += nl + l.substr( m[0].length );\n }\n } // tight_search\n\n if ( li_accumulate.length ) {\n add( last_li, loose, this.processInline( li_accumulate ), nl );\n // Loose mode will have been dealt with. Reset it\n loose = false;\n li_accumulate = \"\";\n }\n\n // Look at the next block - we might have a loose list. Or an extra\n // paragraph for the current li\n var contained = get_contained_blocks( stack.length, next );\n\n // Deal with code blocks or properly nested lists\n if ( contained.length > 0 ) {\n // Make sure all listitems up the stack are paragraphs\n forEach( stack, paragraphify, this);\n\n last_li.push.apply( last_li, this.toTree( contained, [] ) );\n }\n\n var next_block = next[0] && next[0].valueOf() || \"\";\n\n if ( next_block.match(is_list_re) || next_block.match( /^ / ) ) {\n block = next.shift();\n\n // Check for an HR following a list: features/lists/hr_abutting\n var hr = this.dialect.block.horizRule( block, next );\n\n if ( hr ) {\n ret.push.apply(ret, hr);\n break;\n }\n\n // Make sure all listitems up the stack are paragraphs\n forEach( stack, paragraphify, this);\n\n loose = true;\n continue loose_search;\n }\n break;\n } // loose_search\n\n return ret;\n };\n })(),\n\n blockquote: function blockquote( block, next ) {\n if ( !block.match( /^>/m ) )\n return undefined;\n\n var jsonml = [];\n\n // separate out the leading abutting block, if any. I.e. in this case:\n //\n // a\n // > b\n //\n if ( block[ 0 ] != \">\" ) {\n var lines = block.split( /\\n/ ),\n prev = [],\n line_no = block.lineNumber;\n\n // keep shifting lines until you find a crotchet\n while ( lines.length && lines[ 0 ][ 0 ] != \">\" ) {\n prev.push( lines.shift() );\n line_no++;\n }\n\n var abutting = mk_block( prev.join( \"\\n\" ), \"\\n\", block.lineNumber );\n jsonml.push.apply( jsonml, this.processBlock( abutting, [] ) );\n // reassemble new block of just block quotes!\n block = mk_block( lines.join( \"\\n\" ), block.trailing, line_no );\n }\n\n\n // if the next block is also a blockquote merge it in\n while ( next.length && next[ 0 ][ 0 ] == \">\" ) {\n var b = next.shift();\n block = mk_block( block + block.trailing + b, b.trailing, block.lineNumber );\n }\n\n // Strip off the leading \"> \" and re-process as a block.\n var input = block.replace( /^> ?/gm, \"\" ),\n old_tree = this.tree,\n processedBlock = this.toTree( input, [ \"blockquote\" ] ),\n attr = extract_attr( processedBlock );\n\n // If any link references were found get rid of them\n if ( attr && attr.references ) {\n delete attr.references;\n // And then remove the attribute object if it's empty\n if ( isEmpty( attr ) ) {\n processedBlock.splice( 1, 1 );\n }\n }\n\n jsonml.push( processedBlock );\n return jsonml;\n },\n\n referenceDefn: function referenceDefn( block, next) {\n var re = /^\\s*\\[(.*?)\\]:\\s*(\\S+)(?:\\s+(?:(['\"])(.*?)\\3|\\((.*?)\\)))?\\n?/;\n // interesting matches are [ , ref_id, url, , title, title ]\n\n if ( !block.match(re) )\n return undefined;\n\n // make an attribute node if it doesn't exist\n if ( !extract_attr( this.tree ) ) {\n this.tree.splice( 1, 0, {} );\n }\n\n var attrs = extract_attr( this.tree );\n\n // make a references hash if it doesn't exist\n if ( attrs.references === undefined ) {\n attrs.references = {};\n }\n\n var b = this.loop_re_over_block(re, block, function( m ) {\n\n if ( m[2] && m[2][0] == \"<\" && m[2][m[2].length-1] == \">\" )\n m[2] = m[2].substring( 1, m[2].length - 1 );\n\n var ref = attrs.references[ m[1].toLowerCase() ] = {\n href: m[2]\n };\n\n if ( m[4] !== undefined )\n ref.title = m[4];\n else if ( m[5] !== undefined )\n ref.title = m[5];\n\n } );\n\n if ( b.length )\n next.unshift( mk_block( b, block.trailing ) );\n\n return [];\n },\n\n para: function para( block, next ) {\n // everything's a para!\n return [ [\"para\"].concat( this.processInline( block ) ) ];\n }\n }\n};\n\nMarkdown.dialects.Gruber.inline = {\n\n __oneElement__: function oneElement( text, patterns_or_re, previous_nodes ) {\n var m,\n res,\n lastIndex = 0;\n\n patterns_or_re = patterns_or_re || this.dialect.inline.__patterns__;\n var re = new RegExp( \"([\\\\s\\\\S]*?)(\" + (patterns_or_re.source || patterns_or_re) + \")\" );\n\n m = re.exec( text );\n if (!m) {\n // Just boring text\n return [ text.length, text ];\n }\n else if ( m[1] ) {\n // Some un-interesting text matched. Return that first\n return [ m[1].length, m[1] ];\n }\n\n var res;\n if ( m[2] in this.dialect.inline ) {\n res = this.dialect.inline[ m[2] ].call(\n this,\n text.substr( m.index ), m, previous_nodes || [] );\n }\n // Default for now to make dev easier. just slurp special and output it.\n res = res || [ m[2].length, m[2] ];\n return res;\n },\n\n __call__: function inline( text, patterns ) {\n\n var out = [],\n res;\n\n function add(x) {\n //D:self.debug(\" adding output\", uneval(x));\n if ( typeof x == \"string\" && typeof out[out.length-1] == \"string\" )\n out[ out.length-1 ] += x;\n else\n out.push(x);\n }\n\n while ( text.length > 0 ) {\n res = this.dialect.inline.__oneElement__.call(this, text, patterns, out );\n text = text.substr( res.shift() );\n forEach(res, add )\n }\n\n return out;\n },\n\n // These characters are intersting elsewhere, so have rules for them so that\n // chunks of plain text blocks don't include them\n \"]\": function () {},\n \"}\": function () {},\n\n __escape__ : /^\\\\[\\\\`\\*_{}\\[\\]()#\\+.!\\-]/,\n\n \"\\\\\": function escaped( text ) {\n // [ length of input processed, node/children to add... ]\n // Only esacape: \\ ` * _ { } [ ] ( ) # * + - . !\n if ( this.dialect.inline.__escape__.exec( text ) )\n return [ 2, text.charAt( 1 ) ];\n else\n // Not an esacpe\n return [ 1, \"\\\\\" ];\n },\n\n \"![\": function image( text ) {\n\n // Unlike images, alt text is plain text only. no other elements are\n // allowed in there\n\n // ![Alt text](/path/to/img.jpg \"Optional title\")\n // 1 2 3 4 <--- captures\n var m = text.match( /^!\\[(.*?)\\][ \\t]*\\([ \\t]*([^\")]*?)(?:[ \\t]+([\"'])(.*?)\\3)?[ \\t]*\\)/ );\n\n if ( m ) {\n if ( m[2] && m[2][0] == \"<\" && m[2][m[2].length-1] == \">\" )\n m[2] = m[2].substring( 1, m[2].length - 1 );\n\n m[2] = this.dialect.inline.__call__.call( this, m[2], /\\\\/ )[0];\n\n var attrs = { alt: m[1], href: m[2] || \"\" };\n if ( m[4] !== undefined)\n attrs.title = m[4];\n\n return [ m[0].length, [ \"img\", attrs ] ];\n }\n\n // ![Alt text][id]\n m = text.match( /^!\\[(.*?)\\][ \\t]*\\[(.*?)\\]/ );\n\n if ( m ) {\n // We can't check if the reference is known here as it likely wont be\n // found till after. Check it in md tree->hmtl tree conversion\n return [ m[0].length, [ \"img_ref\", { alt: m[1], ref: m[2].toLowerCase(), original: m[0] } ] ];\n }\n\n // Just consume the '!['\n return [ 2, \"![\" ];\n },\n\n \"[\": function link( text ) {\n\n var orig = String(text);\n // Inline content is possible inside `link text`\n var res = Markdown.DialectHelpers.inline_until_char.call( this, text.substr(1), \"]\" );\n\n // No closing ']' found. Just consume the [\n if ( !res ) return [ 1, \"[\" ];\n\n var consumed = 1 + res[ 0 ],\n children = res[ 1 ],\n link,\n attrs;\n\n // At this point the first [...] has been parsed. See what follows to find\n // out which kind of link we are (reference or direct url)\n text = text.substr( consumed );\n\n // [link text](/path/to/img.jpg \"Optional title\")\n // 1 2 3 <--- captures\n // This will capture up to the last paren in the block. We then pull\n // back based on if there a matching ones in the url\n // ([here](/url/(test))\n // The parens have to be balanced\n var m = text.match( /^\\s*\\([ \\t]*([^\"']*)(?:[ \\t]+([\"'])(.*?)\\2)?[ \\t]*\\)/ );\n if ( m ) {\n var url = m[1];\n consumed += m[0].length;\n\n if ( url && url[0] == \"<\" && url[url.length-1] == \">\" )\n url = url.substring( 1, url.length - 1 );\n\n // If there is a title we don't have to worry about parens in the url\n if ( !m[3] ) {\n var open_parens = 1; // One open that isn't in the capture\n for ( var len = 0; len < url.length; len++ ) {\n switch ( url[len] ) {\n case \"(\":\n open_parens++;\n break;\n case \")\":\n if ( --open_parens == 0) {\n consumed -= url.length - len;\n url = url.substring(0, len);\n }\n break;\n }\n }\n }\n\n // Process escapes only\n url = this.dialect.inline.__call__.call( this, url, /\\\\/ )[0];\n\n attrs = { href: url || \"\" };\n if ( m[3] !== undefined)\n attrs.title = m[3];\n\n link = [ \"link\", attrs ].concat( children );\n return [ consumed, link ];\n }\n\n // [Alt text][id]\n // [Alt text] [id]\n m = text.match( /^\\s*\\[(.*?)\\]/ );\n\n if ( m ) {\n\n consumed += m[ 0 ].length;\n\n // [links][] uses links as its reference\n attrs = { ref: ( m[ 1 ] || String(children) ).toLowerCase(), original: orig.substr( 0, consumed ) };\n\n link = [ \"link_ref\", attrs ].concat( children );\n\n // We can't check if the reference is known here as it likely wont be\n // found till after. Check it in md tree->hmtl tree conversion.\n // Store the original so that conversion can revert if the ref isn't found.\n return [ consumed, link ];\n }\n\n // [id]\n // Only if id is plain (no formatting.)\n if ( children.length == 1 && typeof children[0] == \"string\" ) {\n\n attrs = { ref: children[0].toLowerCase(), original: orig.substr( 0, consumed ) };\n link = [ \"link_ref\", attrs, children[0] ];\n return [ consumed, link ];\n }\n\n // Just consume the \"[\"\n return [ 1, \"[\" ];\n },\n\n\n \"<\": function autoLink( text ) {\n var m;\n\n if ( ( m = text.match( /^<(?:((https?|ftp|mailto):[^>]+)|(.*?@.*?\\.[a-zA-Z]+))>/ ) ) != null ) {\n if ( m[3] ) {\n return [ m[0].length, [ \"link\", { href: \"mailto:\" + m[3] }, m[3] ] ];\n\n }\n else if ( m[2] == \"mailto\" ) {\n return [ m[0].length, [ \"link\", { href: m[1] }, m[1].substr(\"mailto:\".length ) ] ];\n }\n else\n return [ m[0].length, [ \"link\", { href: m[1] }, m[1] ] ];\n }\n\n return [ 1, \"<\" ];\n },\n\n \"`\": function inlineCode( text ) {\n // Inline code block. as many backticks as you like to start it\n // Always skip over the opening ticks.\n var m = text.match( /(`+)(([\\s\\S]*?)\\1)/ );\n\n if ( m && m[2] )\n return [ m[1].length + m[2].length, [ \"inlinecode\", m[3] ] ];\n else {\n // TODO: No matching end code found - warn!\n return [ 1, \"`\" ];\n }\n },\n\n \" \\n\": function lineBreak( text ) {\n return [ 3, [ \"linebreak\" ] ];\n }\n\n};\n\n// Meta Helper/generator method for em and strong handling\nfunction strong_em( tag, md ) {\n\n var state_slot = tag + \"_state\",\n other_slot = tag == \"strong\" ? \"em_state\" : \"strong_state\";\n\n function CloseTag(len) {\n this.len_after = len;\n this.name = \"close_\" + md;\n }\n\n return function ( text, orig_match ) {\n\n if ( this[state_slot][0] == md ) {\n // Most recent em is of this type\n //D:this.debug(\"closing\", md);\n this[state_slot].shift();\n\n // \"Consume\" everything to go back to the recrusion in the else-block below\n return[ text.length, new CloseTag(text.length-md.length) ];\n }\n else {\n // Store a clone of the em/strong states\n var other = this[other_slot].slice(),\n state = this[state_slot].slice();\n\n this[state_slot].unshift(md);\n\n //D:this.debug_indent += \" \";\n\n // Recurse\n var res = this.processInline( text.substr( md.length ) );\n //D:this.debug_indent = this.debug_indent.substr(2);\n\n var last = res[res.length - 1];\n\n //D:this.debug(\"processInline from\", tag + \": \", uneval( res ) );\n\n var check = this[state_slot].shift();\n if ( last instanceof CloseTag ) {\n res.pop();\n // We matched! Huzzah.\n var consumed = text.length - last.len_after;\n return [ consumed, [ tag ].concat(res) ];\n }\n else {\n // Restore the state of the other kind. We might have mistakenly closed it.\n this[other_slot] = other;\n this[state_slot] = state;\n\n // We can't reuse the processed result as it could have wrong parsing contexts in it.\n return [ md.length, md ];\n }\n }\n }; // End returned function\n}\n\nMarkdown.dialects.Gruber.inline[\"**\"] = strong_em(\"strong\", \"**\");\nMarkdown.dialects.Gruber.inline[\"__\"] = strong_em(\"strong\", \"__\");\nMarkdown.dialects.Gruber.inline[\"*\"] = strong_em(\"em\", \"*\");\nMarkdown.dialects.Gruber.inline[\"_\"] = strong_em(\"em\", \"_\");\n\n\n// Build default order from insertion order.\nMarkdown.buildBlockOrder = function(d) {\n var ord = [];\n for ( var i in d ) {\n if ( i == \"__order__\" || i == \"__call__\" ) continue;\n ord.push( i );\n }\n d.__order__ = ord;\n};\n\n// Build patterns for inline matcher\nMarkdown.buildInlinePatterns = function(d) {\n var patterns = [];\n\n for ( var i in d ) {\n // __foo__ is reserved and not a pattern\n if ( i.match( /^__.*__$/) ) continue;\n var l = i.replace( /([\\\\.*+?|()\\[\\]{}])/g, \"\\\\$1\" )\n .replace( /\\n/, \"\\\\n\" );\n patterns.push( i.length == 1 ? l : \"(?:\" + l + \")\" );\n }\n\n patterns = patterns.join(\"|\");\n d.__patterns__ = patterns;\n //print(\"patterns:\", uneval( patterns ) );\n\n var fn = d.__call__;\n d.__call__ = function(text, pattern) {\n if ( pattern != undefined ) {\n return fn.call(this, text, pattern);\n }\n else\n {\n return fn.call(this, text, patterns);\n }\n };\n};\n\nMarkdown.DialectHelpers = {};\nMarkdown.DialectHelpers.inline_until_char = function( text, want ) {\n var consumed = 0,\n nodes = [];\n\n while ( true ) {\n if ( text.charAt( consumed ) == want ) {\n // Found the character we were looking for\n consumed++;\n return [ consumed, nodes ];\n }\n\n if ( consumed >= text.length ) {\n // No closing char found. Abort.\n return null;\n }\n\n var res = this.dialect.inline.__oneElement__.call(this, text.substr( consumed ) );\n consumed += res[ 0 ];\n // Add any returned nodes.\n nodes.push.apply( nodes, res.slice( 1 ) );\n }\n}\n\n// Helper function to make sub-classing a dialect easier\nMarkdown.subclassDialect = function( d ) {\n function Block() {}\n Block.prototype = d.block;\n function Inline() {}\n Inline.prototype = d.inline;\n\n return { block: new Block(), inline: new Inline() };\n};\n\nMarkdown.buildBlockOrder ( Markdown.dialects.Gruber.block );\nMarkdown.buildInlinePatterns( Markdown.dialects.Gruber.inline );\n\nMarkdown.dialects.Maruku = Markdown.subclassDialect( Markdown.dialects.Gruber );\n\nMarkdown.dialects.Maruku.processMetaHash = function processMetaHash( meta_string ) {\n var meta = split_meta_hash( meta_string ),\n attr = {};\n\n for ( var i = 0; i < meta.length; ++i ) {\n // id: #foo\n if ( /^#/.test( meta[ i ] ) ) {\n attr.id = meta[ i ].substring( 1 );\n }\n // class: .foo\n else if ( /^\\./.test( meta[ i ] ) ) {\n // if class already exists, append the new one\n if ( attr[\"class\"] ) {\n attr[\"class\"] = attr[\"class\"] + meta[ i ].replace( /./, \" \" );\n }\n else {\n attr[\"class\"] = meta[ i ].substring( 1 );\n }\n }\n // attribute: foo=bar\n else if ( /\\=/.test( meta[ i ] ) ) {\n var s = meta[ i ].split( /\\=/ );\n attr[ s[ 0 ] ] = s[ 1 ];\n }\n }\n\n return attr;\n}\n\nfunction split_meta_hash( meta_string ) {\n var meta = meta_string.split( \"\" ),\n parts = [ \"\" ],\n in_quotes = false;\n\n while ( meta.length ) {\n var letter = meta.shift();\n switch ( letter ) {\n case \" \" :\n // if we're in a quoted section, keep it\n if ( in_quotes ) {\n parts[ parts.length - 1 ] += letter;\n }\n // otherwise make a new part\n else {\n parts.push( \"\" );\n }\n break;\n case \"'\" :\n case '\"' :\n // reverse the quotes and move straight on\n in_quotes = !in_quotes;\n break;\n case \"\\\\\" :\n // shift off the next letter to be used straight away.\n // it was escaped so we'll keep it whatever it is\n letter = meta.shift();\n default :\n parts[ parts.length - 1 ] += letter;\n break;\n }\n }\n\n return parts;\n}\n\nMarkdown.dialects.Maruku.block.document_meta = function document_meta( block, next ) {\n // we're only interested in the first block\n if ( block.lineNumber > 1 ) return undefined;\n\n // document_meta blocks consist of one or more lines of `Key: Value\\n`\n if ( ! block.match( /^(?:\\w+:.*\\n)*\\w+:.*$/ ) ) return undefined;\n\n // make an attribute node if it doesn't exist\n if ( !extract_attr( this.tree ) ) {\n this.tree.splice( 1, 0, {} );\n }\n\n var pairs = block.split( /\\n/ );\n for ( p in pairs ) {\n var m = pairs[ p ].match( /(\\w+):\\s*(.*)$/ ),\n key = m[ 1 ].toLowerCase(),\n value = m[ 2 ];\n\n this.tree[ 1 ][ key ] = value;\n }\n\n // document_meta produces no content!\n return [];\n};\n\nMarkdown.dialects.Maruku.block.block_meta = function block_meta( block, next ) {\n // check if the last line of the block is an meta hash\n var m = block.match( /(^|\\n) {0,3}\\{:\\s*((?:\\\\\\}|[^\\}])*)\\s*\\}$/ );\n if ( !m ) return undefined;\n\n // process the meta hash\n var attr = this.dialect.processMetaHash( m[ 2 ] );\n\n var hash;\n\n // if we matched ^ then we need to apply meta to the previous block\n if ( m[ 1 ] === \"\" ) {\n var node = this.tree[ this.tree.length - 1 ];\n hash = extract_attr( node );\n\n // if the node is a string (rather than JsonML), bail\n if ( typeof node === \"string\" ) return undefined;\n\n // create the attribute hash if it doesn't exist\n if ( !hash ) {\n hash = {};\n node.splice( 1, 0, hash );\n }\n\n // add the attributes in\n for ( a in attr ) {\n hash[ a ] = attr[ a ];\n }\n\n // return nothing so the meta hash is removed\n return [];\n }\n\n // pull the meta hash off the block and process what's left\n var b = block.replace( /\\n.*$/, \"\" ),\n result = this.processBlock( b, [] );\n\n // get or make the attributes hash\n hash = extract_attr( result[ 0 ] );\n if ( !hash ) {\n hash = {};\n result[ 0 ].splice( 1, 0, hash );\n }\n\n // attach the attributes to the block\n for ( a in attr ) {\n hash[ a ] = attr[ a ];\n }\n\n return result;\n};\n\nMarkdown.dialects.Maruku.block.definition_list = function definition_list( block, next ) {\n // one or more terms followed by one or more definitions, in a single block\n var tight = /^((?:[^\\s:].*\\n)+):\\s+([\\s\\S]+)$/,\n list = [ \"dl\" ],\n i, m;\n\n // see if we're dealing with a tight or loose block\n if ( ( m = block.match( tight ) ) ) {\n // pull subsequent tight DL blocks out of `next`\n var blocks = [ block ];\n while ( next.length && tight.exec( next[ 0 ] ) ) {\n blocks.push( next.shift() );\n }\n\n for ( var b = 0; b < blocks.length; ++b ) {\n var m = blocks[ b ].match( tight ),\n terms = m[ 1 ].replace( /\\n$/, \"\" ).split( /\\n/ ),\n defns = m[ 2 ].split( /\\n:\\s+/ );\n\n // print( uneval( m ) );\n\n for ( i = 0; i < terms.length; ++i ) {\n list.push( [ \"dt\", terms[ i ] ] );\n }\n\n for ( i = 0; i < defns.length; ++i ) {\n // run inline processing over the definition\n list.push( [ \"dd\" ].concat( this.processInline( defns[ i ].replace( /(\\n)\\s+/, \"$1\" ) ) ) );\n }\n }\n }\n else {\n return undefined;\n }\n\n return [ list ];\n};\n\n// splits on unescaped instances of @ch. If @ch is not a character the result\n// can be unpredictable\n\nMarkdown.dialects.Maruku.block.table = function table (block, next) {\n\n var _split_on_unescaped = function(s, ch) {\n ch = ch || '\\\\s';\n if (ch.match(/^[\\\\|\\[\\]{}?*.+^$]$/)) { ch = '\\\\' + ch; }\n var res = [ ],\n r = new RegExp('^((?:\\\\\\\\.|[^\\\\\\\\' + ch + '])*)' + ch + '(.*)'),\n m;\n while(m = s.match(r)) {\n res.push(m[1]);\n s = m[2];\n }\n res.push(s);\n return res;\n }\n\n var leading_pipe = /^ {0,3}\\|(.+)\\n {0,3}\\|\\s*([\\-:]+[\\-| :]*)\\n((?:\\s*\\|.*(?:\\n|$))*)(?=\\n|$)/,\n // find at least an unescaped pipe in each line\n no_leading_pipe = /^ {0,3}(\\S(?:\\\\.|[^\\\\|])*\\|.*)\\n {0,3}([\\-:]+\\s*\\|[\\-| :]*)\\n((?:(?:\\\\.|[^\\\\|])*\\|.*(?:\\n|$))*)(?=\\n|$)/,\n i, m;\n if (m = block.match(leading_pipe)) {\n // remove leading pipes in contents\n // (header and horizontal rule already have the leading pipe left out)\n m[3] = m[3].replace(/^\\s*\\|/gm, '');\n } else if (! ( m = block.match(no_leading_pipe))) {\n return undefined;\n }\n\n var table = [ \"table\", [ \"thead\", [ \"tr\" ] ], [ \"tbody\" ] ];\n\n // remove trailing pipes, then split on pipes\n // (no escaped pipes are allowed in horizontal rule)\n m[2] = m[2].replace(/\\|\\s*$/, '').split('|');\n\n // process alignment\n var html_attrs = [ ];\n forEach (m[2], function (s) {\n if (s.match(/^\\s*-+:\\s*$/)) html_attrs.push({align: \"right\"});\n else if (s.match(/^\\s*:-+\\s*$/)) html_attrs.push({align: \"left\"});\n else if (s.match(/^\\s*:-+:\\s*$/)) html_attrs.push({align: \"center\"});\n else html_attrs.push({});\n });\n\n // now for the header, avoid escaped pipes\n m[1] = _split_on_unescaped(m[1].replace(/\\|\\s*$/, ''), '|');\n for (i = 0; i < m[1].length; i++) {\n table[1][1].push(['th', html_attrs[i] || {}].concat(\n this.processInline(m[1][i].trim())));\n }\n\n // now for body contents\n forEach (m[3].replace(/\\|\\s*$/mg, '').split('\\n'), function (row) {\n var html_row = ['tr'];\n row = _split_on_unescaped(row, '|');\n for (i = 0; i < row.length; i++) {\n html_row.push(['td', html_attrs[i] || {}].concat(this.processInline(row[i].trim())));\n }\n table[2].push(html_row);\n }, this);\n\n return [table];\n}\n\nMarkdown.dialects.Maruku.inline[ \"{:\" ] = function inline_meta( text, matches, out ) {\n if ( !out.length ) {\n return [ 2, \"{:\" ];\n }\n\n // get the preceeding element\n var before = out[ out.length - 1 ];\n\n if ( typeof before === \"string\" ) {\n return [ 2, \"{:\" ];\n }\n\n // match a meta hash\n var m = text.match( /^\\{:\\s*((?:\\\\\\}|[^\\}])*)\\s*\\}/ );\n\n // no match, false alarm\n if ( !m ) {\n return [ 2, \"{:\" ];\n }\n\n // attach the attributes to the preceeding element\n var meta = this.dialect.processMetaHash( m[ 1 ] ),\n attr = extract_attr( before );\n\n if ( !attr ) {\n attr = {};\n before.splice( 1, 0, attr );\n }\n\n for ( var k in meta ) {\n attr[ k ] = meta[ k ];\n }\n\n // cut out the string and replace it with nothing\n return [ m[ 0 ].length, \"\" ];\n};\n\nMarkdown.dialects.Maruku.inline.__escape__ = /^\\\\[\\\\`\\*_{}\\[\\]()#\\+.!\\-|:]/;\n\nMarkdown.buildBlockOrder ( Markdown.dialects.Maruku.block );\nMarkdown.buildInlinePatterns( Markdown.dialects.Maruku.inline );\n\nvar isArray = Array.isArray || function(obj) {\n return Object.prototype.toString.call(obj) == \"[object Array]\";\n};\n\nvar forEach;\n// Don't mess with Array.prototype. Its not friendly\nif ( Array.prototype.forEach ) {\n forEach = function( arr, cb, thisp ) {\n return arr.forEach( cb, thisp );\n };\n}\nelse {\n forEach = function(arr, cb, thisp) {\n for (var i = 0; i < arr.length; i++) {\n cb.call(thisp || arr, arr[i], i, arr);\n }\n }\n}\n\nvar isEmpty = function( obj ) {\n for ( var key in obj ) {\n if ( hasOwnProperty.call( obj, key ) ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction extract_attr( jsonml ) {\n return isArray(jsonml)\n && jsonml.length > 1\n && typeof jsonml[ 1 ] === \"object\"\n && !( isArray(jsonml[ 1 ]) )\n ? jsonml[ 1 ]\n : undefined;\n}\n\n\n\n/**\n * renderJsonML( jsonml[, options] ) -> String\n * - jsonml (Array): JsonML array to render to XML\n * - options (Object): options\n *\n * Converts the given JsonML into well-formed XML.\n *\n * The options currently understood are:\n *\n * - root (Boolean): wether or not the root node should be included in the\n * output, or just its children. The default `false` is to not include the\n * root itself.\n */\nexpose.renderJsonML = function( jsonml, options ) {\n options = options || {};\n // include the root element in the rendered output?\n options.root = options.root || false;\n\n var content = [];\n\n if ( options.root ) {\n content.push( render_tree( jsonml ) );\n }\n else {\n jsonml.shift(); // get rid of the tag\n if ( jsonml.length && typeof jsonml[ 0 ] === \"object\" && !( jsonml[ 0 ] instanceof Array ) ) {\n jsonml.shift(); // get rid of the attributes\n }\n\n while ( jsonml.length ) {\n content.push( render_tree( jsonml.shift() ) );\n }\n }\n\n return content.join( \"\\n\\n\" );\n};\n\nfunction escapeHTML( text ) {\n return text.replace( /&/g, \"&\" )\n .replace( /</g, \"<\" )\n .replace( />/g, \">\" )\n .replace( /\"/g, \""\" )\n .replace( /'/g, \"'\" );\n}\n\nfunction render_tree( jsonml ) {\n // basic case\n if ( typeof jsonml === \"string\" ) {\n return escapeHTML( jsonml );\n }\n\n var tag = jsonml.shift(),\n attributes = {},\n content = [];\n\n if ( jsonml.length && typeof jsonml[ 0 ] === \"object\" && !( jsonml[ 0 ] instanceof Array ) ) {\n attributes = jsonml.shift();\n }\n\n while ( jsonml.length ) {\n content.push( render_tree( jsonml.shift() ) );\n }\n\n var tag_attrs = \"\";\n for ( var a in attributes ) {\n tag_attrs += \" \" + a + '=\"' + escapeHTML( attributes[ a ] ) + '\"';\n }\n\n // be careful about adding whitespace here for inline elements\n if ( tag == \"img\" || tag == \"br\" || tag == \"hr\" ) {\n return \"<\"+ tag + tag_attrs + \"/>\";\n }\n else {\n return \"<\"+ tag + tag_attrs + \">\" + content.join( \"\" ) + \"</\" + tag + \">\";\n }\n}\n\nfunction convert_tree_to_html( tree, references, options ) {\n var i;\n options = options || {};\n\n // shallow clone\n var jsonml = tree.slice( 0 );\n\n if ( typeof options.preprocessTreeNode === \"function\" ) {\n jsonml = options.preprocessTreeNode(jsonml, references);\n }\n\n // Clone attributes if they exist\n var attrs = extract_attr( jsonml );\n if ( attrs ) {\n jsonml[ 1 ] = {};\n for ( i in attrs ) {\n jsonml[ 1 ][ i ] = attrs[ i ];\n }\n attrs = jsonml[ 1 ];\n }\n\n // basic case\n if ( typeof jsonml === \"string\" ) {\n return jsonml;\n }\n\n // convert this node\n switch ( jsonml[ 0 ] ) {\n case \"header\":\n jsonml[ 0 ] = \"h\" + jsonml[ 1 ].level;\n delete jsonml[ 1 ].level;\n break;\n case \"bulletlist\":\n jsonml[ 0 ] = \"ul\";\n break;\n case \"numberlist\":\n jsonml[ 0 ] = \"ol\";\n break;\n case \"listitem\":\n jsonml[ 0 ] = \"li\";\n break;\n case \"para\":\n jsonml[ 0 ] = \"p\";\n break;\n case \"markdown\":\n jsonml[ 0 ] = \"html\";\n if ( attrs ) delete attrs.references;\n break;\n case \"code_block\":\n jsonml[ 0 ] = \"pre\";\n i = attrs ? 2 : 1;\n var code = [ \"code\" ];\n code.push.apply( code, jsonml.splice( i, jsonml.length - i ) );\n jsonml[ i ] = code;\n break;\n case \"inlinecode\":\n jsonml[ 0 ] = \"code\";\n break;\n case \"img\":\n jsonml[ 1 ].src = jsonml[ 1 ].href;\n delete jsonml[ 1 ].href;\n break;\n case \"linebreak\":\n jsonml[ 0 ] = \"br\";\n break;\n case \"link\":\n jsonml[ 0 ] = \"a\";\n break;\n case \"link_ref\":\n jsonml[ 0 ] = \"a\";\n\n // grab this ref and clean up the attribute node\n var ref = references[ attrs.ref ];\n\n // if the reference exists, make the link\n if ( ref ) {\n delete attrs.ref;\n\n // add in the href and title, if present\n attrs.href = ref.href;\n if ( ref.title ) {\n attrs.title = ref.title;\n }\n\n // get rid of the unneeded original text\n delete attrs.original;\n }\n // the reference doesn't exist, so revert to plain text\n else {\n return attrs.original;\n }\n break;\n case \"img_ref\":\n jsonml[ 0 ] = \"img\";\n\n // grab this ref and clean up the attribute node\n var ref = references[ attrs.ref ];\n\n // if the reference exists, make the link\n if ( ref ) {\n delete attrs.ref;\n\n // add in the href and title, if present\n attrs.src = ref.href;\n if ( ref.title ) {\n attrs.title = ref.title;\n }\n\n // get rid of the unneeded original text\n delete attrs.original;\n }\n // the reference doesn't exist, so revert to plain text\n else {\n return attrs.original;\n }\n break;\n }\n\n // convert all the children\n i = 1;\n\n // deal with the attribute node, if it exists\n if ( attrs ) {\n // if there are keys, skip over it\n for ( var key in jsonml[ 1 ] ) {\n i = 2;\n break;\n }\n // if there aren't, remove it\n if ( i === 1 ) {\n jsonml.splice( i, 1 );\n }\n }\n\n for ( ; i < jsonml.length; ++i ) {\n jsonml[ i ] = convert_tree_to_html( jsonml[ i ], references, options );\n }\n\n return jsonml;\n}\n\n\n// merges adjacent text nodes into a single node\nfunction merge_text_nodes( jsonml ) {\n // skip the tag name and attribute hash\n var i = extract_attr( jsonml ) ? 2 : 1;\n\n while ( i < jsonml.length ) {\n // if it's a string check the next item too\n if ( typeof jsonml[ i ] === \"string\" ) {\n if ( i + 1 < jsonml.length && typeof jsonml[ i + 1 ] === \"string\" ) {\n // merge the second string into the first and remove it\n jsonml[ i ] += jsonml.splice( i + 1, 1 )[ 0 ];\n }\n else {\n ++i;\n }\n }\n // if it's not a string recurse\n else {\n merge_text_nodes( jsonml[ i ] );\n ++i;\n }\n }\n}\n\n} )( (function() {\n if ( typeof exports === \"undefined\" ) {\n window.markdown = {};\n return window.markdown;\n }\n else {\n return exports;\n }\n} )() );\n"
},
"$:/plugins/tiddlywiki/markdown/readme": {
"title": "$:/plugins/tiddlywiki/markdown/readme",
"text": "This is a TiddlyWiki plugin for parsing Markdown text, based on the [[markdown-js|https://github.com/evilstreak/markdown-js]] project from Dominic Baggott. \n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/markdown]]\n"
},
"$:/plugins/tiddlywiki/markdown/usage": {
"title": "$:/plugins/tiddlywiki/markdown/usage",
"text": "! Markdown Dialects\n\nBy default the markdown parser recognises the original dialect of Markdown [[as described by John Gruber|http://daringfireball.net/projects/markdown/]]. An extended dialect called \"Maruku\" is also included that provides table support and other advanced features. The syntax extensions are modelled on those of [[PHP Markdown Extra|https://michelf.ca/projects/php-markdown/extra/]].\n\nThe configuration tiddler [[$:/config/markdown/dialect]] determines which dialect is used:\n\n|!Dialect |!Description |\n|Gruber |Standard Markdown |\n|Maruku |Extended Maruku Markdown |\n\n\n! Creating ~WikiLinks\n\nCreate wiki links with the usual Markdown link syntax targeting `#` and the target tiddler title:\n\n```\n[link text](#TiddlerTitle)\n```\n\n! Images\n\nMarkdown image syntax can be used to reference images by tiddler title or an external URI. For example:\n\n```\n![alt text](/path/to/img.jpg \"Title\")\n\n![alt text](Motovun Jack.jpg \"Title\")\n```\n"
},
"$:/plugins/tiddlywiki/markdown/wrapper.js": {
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/markdown/wrapper.js\ntype: application/javascript\nmodule-type: parser\n\nWraps up the markdown-js parser for use in TiddlyWiki5\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar markdown = require(\"$:/plugins/tiddlywiki/markdown/markdown.js\");\n\nvar CONFIG_DIALECT_TIDDLER = \"$:/config/markdown/dialect\",\n\tDEFAULT_DIALECT = \"Gruber\";\n\nfunction transformNodes(nodes) {\n\tvar results = [];\n\tfor(var index=0; index<nodes.length; index++) {\n\t\tresults.push(transformNode(nodes[index]));\n\t}\n\treturn results;\n}\n\nfunction transformNode(node) {\n\tif($tw.utils.isArray(node)) {\n\t\tvar p = 0,\n\t\t\twidget = {type: \"element\", tag: node[p++]};\n\t\tif(!$tw.utils.isArray(node[p]) && typeof(node[p]) === \"object\") {\n\t\t\twidget.attributes = {};\n\t\t\t$tw.utils.each(node[p++],function(value,name) {\n\t\t\t\twidget.attributes[name] = {type: \"string\", value: value};\n\t\t\t});\n\t\t}\n\t\twidget.children = transformNodes(node.slice(p++));\n\t\t// Massage images into the image widget\n\t\tif(widget.tag === \"img\") {\n\t\t\twidget.type = \"image\";\n\t\t\tif(widget.attributes.alt) {\n\t\t\t\twidget.attributes.tooltip = widget.attributes.alt;\n\t\t\t\tdelete widget.attributes.alt;\n\t\t\t}\n\t\t\tif(widget.attributes.src) {\n\t\t\t\twidget.attributes.source = widget.attributes.src;\n\t\t\t\tdelete widget.attributes.src;\n\t\t\t}\n\t\t}\n\t\treturn widget;\n\t} else {\n\t\treturn {type: \"text\", text: node};\n\t}\n}\n\nvar MarkdownParser = function(type,text,options) {\n\tvar dialect = options.wiki.getTiddlerText(CONFIG_DIALECT_TIDDLER,DEFAULT_DIALECT),\n\t\tmarkdownTree = markdown.toHTMLTree(text,dialect),\n\t\tnode = $tw.utils.isArray(markdownTree[1]) ? markdownTree.slice(1) : markdownTree.slice(2);\n\tthis.tree = transformNodes(node);\n};\n\n/*\n\n[ 'html',\n [ 'p', 'something' ],\n [ 'h1',\n 'heading and ',\n [ 'strong', 'other' ] ] ]\n\n*/\n\nexports[\"text/x-markdown\"] = MarkdownParser;\n\n})();\n\n",
"title": "$:/plugins/tiddlywiki/markdown/wrapper.js",
"type": "application/javascript",
"module-type": "parser"
}
}
}
with particular reference to the EAO Region
Salesian Dictionary and Glossary
$:/core/ui/AdvancedSearch/Standard
$:/core/ui/ControlPanel/Toolbars
$:/core/ui/ControlPanel/Basics
$:/core/ui/ControlPanel/Plugins/Installed/Languages
$:/core/ui/ControlPanel/TiddlerFields
$:/core/ui/TiddlerInfo/Tools
$:/core/ui/ControlPanel/Settings
$:/core/ui/TiddlerInfo/Advanced
$:/plugins/tiddlywiki/help/HelpPanel/Support
$:/core/ui/MoreSideBar/All
$:/core/ui/ControlPanel/Toolbars/ViewToolbar
{
"tiddlers": {
"$:/info/browser": {
"title": "$:/info/browser",
"text": "yes"
},
"$:/info/node": {
"title": "$:/info/node",
"text": "no"
}
}
}
Draft of 'Silsila (Arabic: سلسلة)'
$:/themes/tiddlywiki/snowwhite
{
"tiddlers": {
"$:/themes/tiddlywiki/snowwhite/base": {
"title": "$:/themes/tiddlywiki/snowwhite/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal-displayed {\n\t<<filter \"blur(4px)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\t<<background-linear-gradient \"left, rgb(216,216,216) 0%, rgb(236,236,236) 250px\">>\n}\n\n.tc-more-sidebar .tc-tab-buttons button {\n\t<<background-linear-gradient \"left, rgb(236,236,236) 0%, rgb(224,224,224) 100%\">>\n}\n\n.tc-more-sidebar .tc-tab-buttons button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgb(236,236,236) 0%, rgb(248,248,248) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/vanilla/themetweaks": {
"title": "$:/themes/tiddlywiki/vanilla/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "Theme Tweaks",
"text": "\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\">\n<$link to=\"\">\n(none)\n</$link>\n<hr>\n<$list filter=\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[sort[title]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\">Scroll with tiddlers</option>\n<option value=\"fixed\">Fixed to window</option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\">Auto</option>\n<option value=\"cover\">Cover</option>\n<option value=\"contain\">Contain</option>\n</$select>\n\\end\n\nYou can tweak certain aspects of the ''Vanilla'' theme.\n\n! Options\n\n|[[Sticky titles|$:/themes/tiddlywiki/vanilla/options/stickytitles]]<br>//Causes tiddler titles to \"stick\" to the top of the browser window. Caution: Does not work at all with Chrome, and causes some layout issues in Firefox// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">No</option><option value=\"yes\">Yes</option></$select> |\n\n! Settings\n\n|[[Font family|$:/themes/tiddlywiki/vanilla/settings/fontfamily]] |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|[[Code font family|$:/themes/tiddlywiki/vanilla/settings/codefontfamily]] |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|[[Page background image|$:/themes/tiddlywiki/vanilla/settings/backgroundimage]] |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|[[Page background image attachment |$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment]] |<<backgroundimageattachment-dropdown>> | |\n|[[Page background image size |$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize]] |<<backgroundimagesize-dropdown>> | |\n\n! Sizes\n\n|[[Font size|$:/themes/tiddlywiki/vanilla/metrics/fontsize]] |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|[[Line height|$:/themes/tiddlywiki/vanilla/metrics/lineheight]] |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|[[Font size for tiddler body|$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize]] |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|[[Line height for tiddler body|$:/themes/tiddlywiki/vanilla/metrics/bodylineheight]] |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|[[Story left position|$:/themes/tiddlywiki/vanilla/metrics/storyleft]]<br>//how far the left margin of the story river<br>(tiddler area) is from the left of the page// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|[[Story top position|$:/themes/tiddlywiki/vanilla/metrics/storytop]]<br>//how far the top margin of the story river<br>is from the top of the page// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|[[Story right|$:/themes/tiddlywiki/vanilla/metrics/storyright]]<br>//how far the left margin of the sidebar <br>is from the left of the page// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|[[Story width|$:/themes/tiddlywiki/vanilla/metrics/storywidth]]<br>//the overall width of the story river// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|[[Tiddler width|$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth]]<br>//within the story river//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|[[Sidebar breakpoint|$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint]]<br>//the minimum page width at which the story<br>river and sidebar will appear side by side// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n"
},
"$:/themes/tiddlywiki/vanilla/base": {
"title": "$:/themes/tiddlywiki/vanilla/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: pre;\n\twhite-space: pre-wrap;\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n white-space: pre-wrap;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\ntextarea, input[type=text] {\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour background>>;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: normal;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 300;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour tag-foreground>>;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-search-results {\n\tpadding-top: 14px;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg,\n.tc-search svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: auto;\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 28px;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor, .tc-tiddler-frame textarea.tc-edit-texteditor {\n\twidth: 100%;\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-editor-background>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 48%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 3px 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n.tc-tiddler-preview-edit {\n\twidth: 48%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n\twidth: calc(100% - 84px);\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down-language-chooser img {\n\twidth: 2em;\n\tvertical-align: baseline;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto; \n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tmax-width: 500px;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 28px;\n\tpadding: 14px 14px 14px 14px;\n\tborder: 2px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 14px;\n\tright: 14px;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n.tc-static-alert {\n\tposition: relative;\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n\tposition: absolute;\n\tz-index: 100;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: block;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground-colour: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-plugin-info-chunk h1 {\n\tfont-size: 1em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk h2 {\n\tfont-size: 0.8em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk div {\n\tfont-size: 0.7em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info img, .tc-plugin-info svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-plugin-info.tc-small-icon img, .tc-plugin-info.tc-small-icon svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 1em 1em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder: 1px solid <<colour table-border>>;\n}\n\n.tc-chooser-item {\n\tborder: 8px;\n}\n\n.tc-chooser-item a.tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tcolor: <<colour tiddler-link-foreground>>;\n\tbackground-color: <<colour tiddler-link-background>>;\n\tmargin: 4px;\n}\n\n.tc-chooser-item a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 4px;\n\tborder: 1px solid #000;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n text-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n min-width: 100%;\n min-height: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 2px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 2px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n display: flex;\n -webkit-align-items: center;\n -webkit-justify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
"text": "15px"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
"text": "22px"
},
"$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
"text": "14px"
},
"$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
"text": "20px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storytop": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyright": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
"text": "686px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
"text": "960px"
},
"$:/themes/tiddlywiki/vanilla/options/stickytitles": {
"title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
"text": "no"
},
"$:/themes/tiddlywiki/vanilla/reset": {
"title": "$:/themes/tiddlywiki/vanilla/reset",
"type": "text/plain",
"text": "/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n * user zoom.\n */\n\nhtml {\n font-family: sans-serif; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n margin: 0;\n}\n\n/* HTML5 display definitions\n ========================================================================== */\n\n/**\n * Correct `block` display not defined in IE 8/9.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9.\n * Hide the `template` element in IE, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n display: none;\n}\n\n/* Links\n ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n background: transparent;\n}\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\n\na:active,\na:hover {\n outline: 0;\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9, Safari 5, and Chrome.\n */\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\n */\n\nb,\nstrong {\n font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari 5 and Chrome.\n */\n\ndfn {\n font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari 5, and Chrome.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9.\n */\n\nimg {\n border: 0;\n}\n\n/**\n * Correct overflow displayed oddly in IE 9.\n */\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari 5.\n */\n\nfigure {\n margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10.\n */\n\nbutton {\n overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8+, and Opera\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; /* 2 */\n cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n * (include `-moz` to future-proof).\n */\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; /* 2 */\n box-sizing: content-box;\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n border: 0; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n font-weight: bold;\n}\n\n/* Tables\n ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
"text": "\"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", \"DejaVu Sans\", sans-serif"
},
"$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
"text": "Monaco, Consolas, \"Lucida Console\", \"DejaVu Sans Mono\", monospace"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
"text": "fixed"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
"text": "auto"
},
"$:/themes/tiddlywiki/vanilla/sticky": {
"title": "$:/themes/tiddlywiki/vanilla/sticky",
"text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n``\n</$reveal>\n"
}
}
}
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Church as communion: vertical - from God; horizontal - extending out to all mankind, and Church's life as a striving for holiness. Since all of consecrated life comes within the ecclesial (Church) domain, this has to be regarded as a superclass or top concept in SKOS terms. The Church as organization might well be handled by existing vocabularies or ontologies. Where there is something quite specific to Church which overlaps with the 'communion' dimension expressed here, it is included in this vocabulary
Also found outside Salesian usage
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[tag[Dictionary entry]]+[tag{!!status}]">>
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
The ontological state of being resulting from the profession of the evangelical counsels in the Church. Example terms used: Religious, Religious Life, Consecrated Virgin, Hermit, Eremitical life…
Not well understood outside Salesian or perhaps Church circles
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[tag[Dictionary entry]]+[tag{!!status}]">>
A term fairly recently coined (perhaps from Vatican II onwards, but the timeframe is flexible)
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[tag[Dictionary entry]]+[tag{!!status}]">>
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Vow or at least promise accepted by a superior in the context of an association approved by the Church. This would usually be a consecrated life group, but it is possible in some instances that the sacred bond is directly with the Church and accepted by the Bishop (as in the case, for example of a Consecrated Virgin).
Fallen out of regular use; of historical interest
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[tag[Dictionary entry]]+[tag{!!status}]">>
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
The Gospel counsels. The consecrated life is constituted by the profession of the evangelical counsels. They are more often than not referred to in the plural, but can be named separately. Although not part of the Church's hierarchy, the profession of the evangelical counsels by consecrated persons belongs to the Church's life and holiness. Traditionally known as poverty, chastity and obedience.
Official disapproval or if not disapproval, official abandonment at least
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[tag[Dictionary entry]]+[tag{!!status}]">>
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
A religious society in which, in accordance with their own law, the members pronounce public vows and live a fraternal life in common.
Can be extended to any organisation representing a collection of people organised together into a community or other social, commercial or political structure. The group has some common purpose or reason for existence which goes beyond the set of people belonging to it and can act as an Agent.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Descriptive of the spiritual orientation and characteristics specific to a Religious Institute. Normally understood to be the gifts of the Holy Spirit as represented in the Founder or Founders and passed on to the Institute to be preserved and developed. In purely secular terms this might be understood as the purpose of the organization. Related to it is [[07. Spirituality]]
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
To be understood in this context as a particular spirituality representative of the charism of the Religious Institute. e.g. Salesian spirituality, Dominican spirituality.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Mission is of the Spirit, hence a theological concept, rather than of a particular group (for which we might speak of charism or spirituality). Mission is a fundamental principle of consecrated life, not to be confused with 'missions' or 'the missions' which are specific sectors.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Religious Family is a term that stands for the bond (of varying strengths) that links groups under the one charism. It is an institutional expression of an inner, charismatic and spiritual communion.
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Service of authority indicates a role a person or other agent plays in the consecrated life group. Usually a person is established as a sign of unity and a guide in discerning God's will, which is the role of the Superior, or Rector.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
That which is promulgated for the whole Church. We are interested in the universal law of the Church as it applies to the consecrated state or to consecrated persons.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
The Proper law defines rules in observance of the patrimony of the institute composed of the mind and designs of the founders regarding the nature, purpose, spirit and character of the institute in keeping with sound traditions.
The Proper Law of the Institute covers such terms as 'Constitutions', 'Regulations', 'Statutes', 'Chapter deliberations', 'Directory' etc.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
The personal accompaniment of an individual, the stages reached in the process of personal growth towards completeness as a human being.
Includes terms such as 'initial formation', 'ongoing formation', 'special formation', 'quinquennium' etc.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
The consecrated person is one who has taken on the obligations of the evangelical counsels and has made 'profession'.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Indicates the nature of the Membership of an individual (e.g. incorporated in an Institute, radical membership of a Province etc.) or of a group to a Religious Family. In this latter case there will be varying degrees. For example a group may have been additionally founded by the founder, so has a level of membership at the core level, or it may have been founded by a member of the group the founder founded, so at a secondary level of Membership of the Family; or it may have sprung into existence inspired by the founder's charism, hence a tertiary level of Membership.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
A broadly understood delimitation which may be territorial (as in a province or diocese) or personal (as in a personal prelature, ordinariate or other). In almost every case for consecrated life groups the notion of ecclesiastical circumscription is that of a legally constituted extension, normally consisting of more than one legally constituted house under a duly appointed superior.
It may be represented by terms such as 'province', 'vice province', 'district', 'delegation', 'region', 'custody', 'mission', 'conference' or other similar.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Community Life. A dimension of Religious community, which may be expressed in concrete terms as 'fraternal life' or 'community life' or similar.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
A condition of consecrated life in an Institute, in contrast to private, individual living of the secular clergy or to the eremetical solitary life. Means living in community, with submission to a superior and a common rule, with community of goods such as food, clothing, and shelter.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
A lawfully constituted community under the authority of a Superior designated by law. The term interprets 'lawfully constituted' broadly here to include a presence set up by due religious authority but not canonically constituted.
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Age group 1-29.
!!!''Definition:'' (if a precise one exists)
TRECCANI: L’età intermedia tra l’adolescenza e la maturità, e per estens. tutta la //prima età// dell’uomo (contrapp. a vecchiezza) The age between adolescence and maturity and by extension all of the human being's //first age// (as opposed to old age).
<br>
!!!''Synonyms:''
youth
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Different cultures distinguish age groupings in different ways. One would be unlikely to find, in English, terms like //first age//, //second age// etc., as recorded here. In fact there are probably only three general groupings in English: young, middle-aged, elderly, and the boundaries are rather flexible for these. Amongst the //young// category, English might distinguish infants, children, adolescents, young adults. Having said that, there is, in the UK, the University of the Third Age, so at least that term is recognised as //older people no longer in full time work//.
<br>
!!!''Usage notes''
Expect to find //2a età// (the 30-59 age group) and //3a età// (see earlier in this comment. It would be capitalised in English as ''Third Age''), and perhaps even //4a età// (75 and over).
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
[[OtherLink]]
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
An Apostolic Work is essentially a work of charity, but it may take precise concrete and indeed institutional form as a work of 'education' or 'health care' or other of the kind.
It is intended to cover the superior level of designation (education, health care etc) rather than the more precise 'school' or 'hospital' or similar, or could apply to all 'works'. Where it is a case of a work taking particular institutional form one could call on an organization vocabulary. But for the purposes of this glossary it can cover these too.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Any formal moment of gathering in consecrated life (be it in community at local level, or in a province, or worldwide, or across different groups of consecrated life…). The term covers the full range of religious assembly in consecrated life.
Examples of instances 'Chapter', 'community assembly'.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
A unit of organization which is of the very nature (charismatic) of the consecrated life group in question, so only has full recognition within the context of that group. It is not a Legal Entity in its own right. Units can be large and complex containing other units. Groups may have a variety of names for this kind of unit: department, ambit ...
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Worldly goods as distinct from spiritual goods.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Refers to the autonomy of a consecrated life group and the way it preserves it patrimony. The term can therefore cover the concept of 'governance'.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Calling; the fundamental calling is to holiness. The term is often applied in the plural, 'vocations', implying people who are attracted to this form of life, or in reference to ones 'vocation' or calling (to this or that other Institute).
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
An aspect or an element of the consecrated state. May be qualified by terms such as 'prophetic', 'charismatic'.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
Patrimony is an extensive class including such things as the 'intentions of the Founder', the 'spirit' and 'charism' of the Institute, its wholesome 'traditions', the 'Constitutions' and other 'norms', 'discipline', 'incorporation', 'formation' and proper object of the 'sacred bond'.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
This is a deliberately broad notion: "something that happened" as might be reported in a news article or explained by a historian. It could be a formal written account.
Is intended to cover the notion of history (time, place, circa ...)
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
A deliberately generic category to cover any notion, idea, concept that does not fit the more specific consecrated life ontology being used for this glossary, but might be covered by another ontology not included here.
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
A FOAF class: friend of a friend class, social networks of human collaboration, friendship and association; representational networks that describe a simplified view of a cartoon universe in factual terms, and information networks that use Web-based linking to share independently published descriptions of this inter-connected world.
'Document' represents those things (physical, electronic) broadly conceived of as a 'document'. In the FOAF definition any image or other resource can be of the 'Document' class.
<<list-word-gloss filter:"[tag[Dictionary entry]] +[tag{!!category}]">>
While this category may well be a subset of others listed in this Glossary (e.g. Document), it seems that we cannot avoid a broad category such as this in the 21st century. So feel free to apply this semantic concept wherever you feel it is appropriate, since a range of terms may well appear in Salesian documentation such as: digital * (where * stands for a noun, e.g. maps, media, music player, native ... ); electronic records; file(s); born digital; computer; laser; virtual and so on.
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' abandoned.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Lasciato definitivamente, e in partic. lasciato senza cure, senza assistenza, senza protezione, conforme ai varî sign. del verbo: casa, città a., senza più abitanti, deserta; terreno a., lasciato incolto; bambini a., infanzia a., dai genitori./// Left permanently, without care, assistance, protection ... children ~, infant ~, by parents.
!!!''Synonyms:''
neglected, in a state of dire poverty with nobody to look after (them)
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Note the term //poor and abandoned// which DB used, but which was also frequently in use to describe the situation of young people who might also be socially and religiously deprived. This group was Don Bosco's definitive vocational option, which is why the
//08 Mission// Semantic category above has been selected.
<br>
!!!''Usage notes''
The question arises, from the earlier Constitutions, and varied subsequent usage, of the difference between //poor, poorer, the poorest// especially in the early Constitutions' Chapter on Purpose. The following insights are from Lenti, //Don Bosco History and Spirit// Vol 4. In the chapter on ''Purpose'', the term occurs in various grammatical forms...The Latin forms //pauperes, pauperiores, pauperrimi// (Italian //poveri, più poveri, i più poveri/poverssimi//) constitute a system having a twofold semantic value. These forms may be used either in an "absolute" fashion as quantifiers, or in a "relative" fashion as classifiers... As quantifiers they express the quantity or intensity of a person's poverty "absolutely", that is without comparison to the poverty of other persons. As quantifiers the three forms express degrees of poverty by reference to a social standard. As classifiers the three forms express degrees of poverty in relation to a person or group. (where "poorer" might mean "less well off"). "poor, poorer, poorest" in the chapter on Purpose, and indeed throughout the Constitutions, are used as quantifiers, not as classifiers. It was not Don Bosco's intention to classify young people by the criterion of poverty and to choose the poorest of all to the exclusion of others.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Adjective, past participle of //abbandonare//
!!!''Citation''
Viganò ACG290: l'ammalato e il prigioniero, nel liberare e promuovere il giovane abbandonato e sviato.
Let us never forget that we exist for poor and abandoned boys (Don Bosco's Spiritual Testament).
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[poor and abandoned|povero e abbandonato]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' cassock
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Come simbolo dello stato sacerdotale: indossare, vestire l’abito talare.; rinunciare all’abito talare.; il rispetto della veste talare.// [//talare//, adj from //tallone//=heel] as a symbol of the priestly state: put on, wear the cassock
<br>
!!!''Synonyms:''
clerical dress, habit
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A common Italian phrase is //deporre l'abito//, to lay aside the cassock.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' sanctuary.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Elemento tipico dell’architettura romana, nella cella del tempio e soprattutto nella basilica forense è usata come soluzione terminale di un ambiente, destinata ad attrarre, con la sua forma, l’attenzione sul suo contenuto; di qui il valore liturgico che l’abside (detta anche tribuna) assume nella chiesa cristiana a impianto basilicale, al termine della navata.// Typical element in Roman architecture in the //cella// (where the divinity was located) of a temple or basilica ... to draw attention to what it contains, hence the liturgical value of the //abside// in a Christian church ...
MACQUARIE: Architecture: a vaulted semicircular or polygonal recess in a building, especially at the end of the choir of a church.
<br>
!!!''Synonyms:''
apse
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
"sanctuary" as in the place where the altar is in a church, more commonly known as //presibiterio//, a candidate for a false friend in translation as "presbytery" which it is not! This latter is //canonica// in Italian.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
It is not difficult to see that 'apse' and 'abside' conme from the same root: [Latin //apsis//, from Greek //(h)apsīs// loop, circle, bow, arch, apse
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' academy.
!!!''Definition:'' (if a precise one exists)
SOURCE UNKNOWN: A semi-religious or cultural programme often performed on the vigil of a major feast day.
<br>
!!!''Synonyms:''
religious entertainment program
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term could even be noted as archaic because it is hardly understood in this special sense in English outside of Salesian or religious circles, and even there perhaps only in initial formation communities.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Its etymology is Greek (//Akadémeia//) in reference to the Garden of Academe where Plato taught, near Athens.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ministry of Acolyte.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Nella gerarchia ecclesiastica, il quarto, e più elevato, degli ordini sacri minori; dopo la riforma del 1972, è uno dei ministeri comuni a tutta la Chiesa (insieme con quello di lettore), e può essere conferito con particolare istituzione, o affidato temporaneamente, anche a un laico.// In the ecclesiastical hierarchy, the fourth and highest of the minor orders; after the 1972 reform, it is one of the ministries common to the whole Church (along with Reader or Lector), and can be conferred in a special ceremony, including on lay people.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Note that the term nearly always appears in close association with //lettorato//, 'ministry of Reader' or Lector. The one who takes on this ministry is called an //accolito// or 'Acolyte'.
The definition refers to the institution of acolyte (General Instruction of the Roman Missal, 98) but further on indicates that if an instituted acolyte is not present, a lay person (who could be male or female) may be deputed. However the sense in which the term is used in Salesian discourse is almost always that of the instituted acolyte normally, but not essentially, in preparation for priesthood.
<br>
!!!''Usage notes''
'Ministry of acolyte' is expressed by a single noun in many Romance languages.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
fr. //acolyte//; es. //acolito//; de. //Akoluth//; - el ἀκόλουϑος (cf. ἀκολουϑεω "obey, serve, follow"), probably an assistant to the bishop originally.
Middle English //acolyt//, from Medieval Latin //acolitus//, from Greek //akolouthos// follower
!!!''Citation''
“Lay men who possess the age and qualifications established by decree of the conference of bishops can be admitted on a stable basis through the prescribed liturgical rite to the ministries of lector and acolyte" (CIC 230)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Reader|lettorato]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' accompaniment.
!!!''Definition:'' (if a precise one exists)
SOURCE UNKNOWN: An act of support by a person for another individual or for a group. Or from TRECCANI: //Seguire una persona, andare con essa come compagno ... // To follow up someone, go with someone as a companion ...
<br>
!!!''Synonyms:''
to move with, to be with, to be on first name terms with, to be trusted by, companionship, guidance ...
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Note also that //accompagnamento vocazionale// in Italian might be rendered as "vocational guidance" in English. The extended list of synonyms above already suggests that it might be better to avoid the term 'accompaniment' where it could cause confusion.
The term in religious and Salesian usage applies either to an individual or to a group and implies guidance, spiritual direction and a certain style, if carried out by Salesians. We could rightly speak of a 'pedagogy of accompaniment' at the core of the Salesian approach to the young. There are more specific forms of this accompaniment as in sacramental accompaniment in Confession. "Accompaniment" has become the subject of an entire survey throughout Salesian formation processes in recent times.
Conceptually, "accompaniment" is a subordinate part which supports a lead part, hence its application in music, but the same concept applies in its application to a person accompanying another, The one being accompanied is the lead person, the accompanier a support.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Derived from //accompagnare//
!!!''Citation''
Viganò ACG314: L'accompagnamento individuale personalizzato in una sapiente opera di discernimento e di direzione spirituale e l'accompagnamento di gruppo, condivisione di un graduale cammino di fede comunitario.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[vocational accompaniment|accompagnamento vocazionale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' vocational guidance.
!!!''Definition:'' (if a precise one exists)
See [[accompagnamento]]
<br>
!!!''Synonyms:''
vocational guidance
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
<br>
!!!''Usage notes''
Note that "guidance" is the preferred word to "accompaniment" in this instance.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
CG23:..accompagnamento vocazionale, essa ha saputo dar vita a nuove e svariate...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[accompaniment|accompagnamento]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ACG.
!!!''Definition:'' (if a precise one exists)
The official organ for the promulgation of directives of the Rector Major and his Council.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Their publication is the responsibility of the Secretary General.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ACS]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' purchases.
!!!''Definition:'' (if a precise one exists)
<br>
!!!''Synonyms:''
assets
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Accounting terminology
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ASC [Archaic].
!!!''Definition:'' (if a precise one exists)
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term is deprecated, as they are now known as the Acts of the General Council AGC (or //Atti del Consiglio Generale// ACG).
It is of historical interest that initially there was just a series of circular letters from Don Bosco, then Don Rua and Don Albera. On 24 June 1920, however, the following comments was made (here translated into English):
"To avoid this inconvenience and to strengthen the bonds that link all the Houses with the Centre of the Pious Society, and make them more direct, the Superior Chapter has decided to provide its Acts for the confreres in a booklet with the title 'Acts of the Superior Chapter of the Pious Salesian Society', which will ordinarily be published every two months. This booklet will consist of two parts: 1st part, the Acts of the Superior Chapter, 2nd part, communiques and notes".
It is also of interest that on 24 June 1932 (Year XIII, No. 58 of said Acts) the first part was translated into English for the first time.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ACG]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian History Association.
!!!''Definition:'' (if a precise one exists)
ISS website: //Essa ha per scopo la promozione di studi sulla storia salesiana, favorendo la ricerca, l’aggiornamento e la collaborazione fra i membri, animando la Famiglia Salesiana sotto il profilo storiografico, divulgando le conoscenze su Don Bosco e sulle Congregazioni, Associazioni, Gruppi che da lui hanno avuto origine, in dialogo con analoghe istituzioni civili e religiose.//
Association for those who cultivate Salesian history.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Set up by decree of the Rector Major on 9 October 1996
<br>
!!!''Usage notes''
<br>
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ISS]].//
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>ACSSA Vocabulary</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="title" content="ACSSA Vocabulary" />
<meta name="generator" content="Org-mode" />
<meta name="generated" content="2012-02-14 21:12:14 CET" />
<meta name="author" content="jbfox" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
html { font-family: Times, serif; font-size: 12pt; }
.title { text-align: center; }
.todo { color: red; }
.done { color: green; }
.tag { background-color: #add8e6; font-weight:normal }
.target { }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.right {margin-left:auto; margin-right:0px; text-align:right;}
.left {margin-left:0px; margin-right:auto; text-align:left;}
.center {margin-left:auto; margin-right:auto; text-align:center;}
p.verse { margin-left: 3% }
pre {
border: 1pt solid #AEBDCC;
background-color: #F3F5F7;
padding: 5pt;
font-family: courier, monospace;
font-size: 90%;
overflow:auto;
}
table { border-collapse: collapse; }
td, th { vertical-align: top; }
th.right { text-align:center; }
th.left { text-align:center; }
th.center { text-align:center; }
td.right { text-align:right; }
td.left { text-align:left; }
td.center { text-align:center; }
dt { font-weight: bold; }
div.figure { padding: 0.5em; }
div.figure p { text-align: center; }
div.inlinetask {
padding:10px;
border:2px solid gray;
margin:10px;
background: #ffffcc;
}
textarea { overflow-x: auto; }
.linenr { font-size:smaller }
.code-highlighted {background-color:#ffff00;}
.org-info-js_info-navigation { border-style:none; }
#org-info-js_console-label { font-size:10px; font-weight:bold;
white-space:nowrap; }
.org-info-js_search-highlight {background-color:#ffff00; color:#000000;
font-weight:bold; }
/*]]>*/-->
</style>
<script type="text/javascript">
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
</script></head><body>
<div id="preamble">
</div>
<div id="content">
<h1 class="title">ACSSA Vocabulary</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#sec-1">1 Abstract</a></li>
<li><a href="#sec-2">2 Other formats: RDF/XML | JSON | Turtle</a></li>
<li><a href="#sec-3">3 History</a></li>
<li><a href="#sec-4">4 Namespace</a></li>
<li><a href="#sec-5">5 Abbreviations</a></li>
<li><a href="#sec-6">6 Status of this Document</a></li>
<li><a href="#sec-7">7 Alphabetical list of Salesian Vocabulary classes and properties</a>
<ul>
<li><a href="#sec-7-1">7.1 CLASSES</a></li>
<li><a href="#sec-7-2">7.2 PROPERTIES</a></li>
</ul>
</li>
<li><a href="#sec-8">8 All Classes and properties</a>
<ul>
<li><a href="#sec-8-1">8.1 CLASSES</a>
<ul>
<li><a href="#sec-8-1-1">8.1.1 Resource</a></li>
<li><a href="#sec-8-1-2">8.1.2 Document</a></li>
<li><a href="#sec-8-1-3">8.1.3 DigitalManifestation</a></li>
<li><a href="#sec-8-1-4">8.1.4 DigitalDocument</a></li>
<li><a href="#sec-8-1-5">8.1.5 Publication</a></li>
<li><a href="#sec-8-1-6">8.1.6 Book</a></li>
<li><a href="#sec-8-1-7">8.1.7 Journal</a></li>
<li><a href="#sec-8-1-8">8.1.8 Article</a></li>
<li><a href="#sec-8-1-9">8.1.9 AcademicArticle</a></li>
<li><a href="#sec-8-1-10">8.1.10 AuthorList</a></li>
<li><a href="#sec-8-1-11">8.1.11 Thesis</a></li>
<li><a href="#sec-8-1-12">8.1.12 Organization</a></li>
<li><a href="#sec-8-1-13">8.1.13 University</a></li>
<li><a href="#sec-8-1-14">8.1.14 WorkCollection</a></li>
<li><a href="#sec-8-1-15">8.1.15 WebPage</a></li>
<li><a href="#sec-8-1-16">8.1.16 WebSite</a></li>
<li><a href="#sec-8-1-17">8.1.17 Proposition</a></li>
<li><a href="#sec-8-1-18">8.1.18 Proceedings</a></li>
<li><a href="#sec-8-1-19">8.1.19 InProceedings</a></li>
<li><a href="#sec-8-1-20">8.1.20 Unpublished</a></li>
<li><a href="#sec-8-1-21">8.1.21 Misc</a></li>
<li><a href="#sec-8-1-22">8.1.22 MediaType</a></li>
<li><a href="#sec-8-1-23">8.1.23 ResearchInstitute</a></li>
<li><a href="#sec-8-1-24">8.1.24 CompilationForm</a></li>
</ul>
</li>
<li><a href="#sec-8-2">8.2 PROPERTIES</a>
<ul>
<li><a href="#sec-8-2-1">8.2.1 hasAuthors</a></li>
<li><a href="#sec-8-2-2">8.2.2 hasFirstName</a></li>
<li><a href="#sec-8-2-3">8.2.3 hasMiddleName</a></li>
<li><a href="#sec-8-2-4">8.2.4 hasSurname</a></li>
<li><a href="#sec-8-2-5">8.2.5 hasSurnameMaternal</a></li>
<li><a href="#sec-8-2-6">8.2.6 isAuthorCategory</a></li>
<li><a href="#sec-8-2-7">8.2.7 hasTitle</a></li>
<li><a href="#sec-8-2-8">8.2.8 hasSubtitle</a></li>
<li><a href="#sec-8-2-9">8.2.9 inSeries</a></li>
<li><a href="#sec-8-2-10">8.2.10 hasType</a></li>
<li><a href="#sec-8-2-11">8.2.11 containedInBook</a></li>
<li><a href="#sec-8-2-12">8.2.12 editedBy</a></li>
<li><a href="#sec-8-2-13">8.2.13 hasNumber</a></li>
<li><a href="#sec-8-2-14">8.2.14 hasVolumeID</a></li>
<li><a href="#sec-8-2-15">8.2.15 inCountry</a></li>
<li><a href="#sec-8-2-16">8.2.16 inCity</a></li>
<li><a href="#sec-8-2-17">8.2.17 publishedBy</a></li>
<li><a href="#sec-8-2-18">8.2.18 isVolume</a></li>
<li><a href="#sec-8-2-19">8.2.19 hasPublicationYear</a></li>
<li><a href="#sec-8-2-20">8.2.20 isEdition</a></li>
<li><a href="#sec-8-2-21">8.2.21 hasPageCount</a></li>
<li><a href="#sec-8-2-22">8.2.22 hasFormat</a></li>
<li><a href="#sec-8-2-23">8.2.23 hasPageRange</a></li>
<li><a href="#sec-8-2-24">8.2.24 hasJournalName</a></li>
<li><a href="#sec-8-2-25">8.2.25 isAboutCountry</a></li>
<li><a href="#sec-8-2-26">8.2.26 hasContentCategory</a></li>
<li><a href="#sec-8-2-27">8.2.27 hasDescription</a></li>
<li><a href="#sec-8-2-28">8.2.28 compiledBy</a></li>
<li><a href="#sec-8-2-29">8.2.29 hasURL</a></li>
<li><a href="#sec-8-2-30">8.2.30 hasLanguageCode</a></li>
<li><a href="#sec-8-2-31">8.2.31 hasID</a></li>
<li><a href="#sec-8-2-32">8.2.32 hasCreationDate</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-1" class="outline-2">
<h2 id="sec-1"><span class="section-number-2">1</span> Abstract</h2>
<div class="outline-text-2" id="text-1">
<p><i>ACCSA Vocabulary</i>: "A vocabulary for describing bibliographic records of Salesian historiography". (en)
</p>
<p>
<i>Vocabolario ACSSA</i>: "Un vocabolario per descrivere schede bibliograpfiche di storiografia salesiana". (it)
</p>
<p>
"One of the recommendations for creating semantic web vocabularies is
to re-use existing vocabularies or at least some terms from them where
possible. This practice is evident in the current vocabulary: where
possible terms have been drawn from already existing and well-known
ontologies or taxonomies in use for the semantic web. These include
BIBO, FaBiO, SW-Portal Ontology, dcterms". (en)
</p>
<p>"Una delle raccomandazioni per la creazione di vocabolari web
semantico è quello di riutilizzare vocabolari esistenti o almeno alcuni
termini da loro, quando sia possibile. Questa pratica è evidente nel
vocabolario attuale: dove possibile, i termini sono stati tratti da
ontologie già esistenti e ben noti o tassonomie in uso per il web
semantico. Questi includono BIBO, FaBiO, SW-Portal Ontology, dcterms".
(it)
</p></div>
</div>
<div id="outline-container-2" class="outline-2">
<h2 id="sec-2"><span class="section-number-2">2</span> Other formats: RDF/XML | JSON | Turtle</h2>
<div class="outline-text-2" id="text-2">
<p><a href="http://www.sdb.org/vocabulary/acssa.rdf">RDF/XML</a> <a href="http://www.sdb.org/vocabulary/acssa.json">JSON</a> <a href="http://www.sdb.org/vocabulary/acssa.ttl">Turtle</a>
</p></div>
</div>
<div id="outline-container-3" class="outline-2">
<h2 id="sec-3"><span class="section-number-2">3</span> History</h2>
<div class="outline-text-2" id="text-3">
<p><b>This Version</b>:
</p>
<p>
<a href="http://www.sdb.org/vocabulary/acssa">http://www.sdb.org/vocabulary/acssa</a>#
</p>
<p>
<b>Previous Version</b>: There is none.
</p></div>
</div>
<div id="outline-container-4" class="outline-2">
<h2 id="sec-4"><span class="section-number-2">4</span> Namespace</h2>
<div class="outline-text-2" id="text-4">
<p><b>The URI for this vocabulary is</b>: <a href="http://www.sdb.org/vocabulary/salesian">http://www.sdb.org/vocabulary/salesian</a>#
</p>
<p>
When abbreviating terms <b>the suggested prefix is</b> <i>acssa</i>.
</p>
<p>
<b>Editors</b>:
</p>
<p>
Salesian Social Communications Department: <a href="mailto:admin@sdb.org">mailto:admin@sdb.org</a>
</p>
<p>
<b>Contributors</b>:
</p>
<ul>
<li>Julian Fox sdb
</li>
<li>Stanislao Zimniak sdb
</li>
</ul>
</div>
</div>
<div id="outline-container-5" class="outline-2">
<h2 id="sec-5"><span class="section-number-2">5</span> Abbreviations</h2>
<div class="outline-text-2" id="text-5">
<p>Any number of abbreviations are evident in this ontology. They are explained below:
</p>
<ul>
<li>ACSSA (also appears as acssa): Associazione cultori storiografia salesiana.
</li>
<li>BIBO (also appears as bibo): Bibliographic Ontology.
</li>
<li>dcterms: Dublin Core Metadata Initiative known as DCMI Metadata Terms.
</li>
<li>FaBiO (also appears as fabio): the FRBR-aligned Bibliographic Ontology.
</li>
<li>FRBR: Functional Requirements for Bibliographic Records.
</li>
<li>URI: Universal Resource Indicator
</li>
<li>swpo: SW-Portal Ontology.
</li>
<li>URL: Universal Resource Locator.
</li>
</ul>
</div>
</div>
<div id="outline-container-6" class="outline-2">
<h2 id="sec-6"><span class="section-number-2">6</span> Status of this Document</h2>
<div class="outline-text-2" id="text-6">
<p>"This document is open for review by others who feel they can
contribute. The objective is to enhance the witness and effectiveness
of websites belonging to the Salesian Congregation in the overall
context of the Web, by promoting open data where it is possible and
desirable to do so and the means to link such data. This approach can
enhance interoperability in many instances where it is particularly
desirable." (en)
</p>
<p>"Questo documento è disponibile per la revisione da parte di altri
che si sentono in grado di contribuire. L'obiettivo è di migliorare la
testimonianza e l'efficacia dei siti web appartenenti alla
Congregazione Salesiana nel contesto generale del Web, attraverso la
promozione di dati aperti dove sia possibile e auspicabile farlo.
Questo approccio può migliorare l'interoperabilità in molti casi in cui
è particolarmente auspicabile." (it)
</p>
<p>
"The intended public is invited to send comments to <a href="mailto:admin@sdb.org">mailto:admin@sdb.org</a>." (en)
</p>
<p>
"Le persone sono invitate e inviare i loro commenti a <a href="mailto:admin@sdb.org">mailto:admin@sdb.org</a>. "(it)
</p>
<p>"This section describes the status of this document at the time of
its publication. Other documents may supersede this document." (en)
</p>
<p>"Questa sezione descrive lo stato di questo documento al momento
della sua pubblicazione. Altri documenti possono sostituire questo
documento." (it)
</p></div>
</div>
<div id="outline-container-7" class="outline-2">
<h2 id="sec-7"><span class="section-number-2">7</span> Alphabetical list of Salesian Vocabulary classes and properties</h2>
<div class="outline-text-2" id="text-7">
</div>
<div id="outline-container-7-1" class="outline-3">
<h3 id="sec-7-1"><span class="section-number-3">7.1</span> CLASSES</h3>
<div class="outline-text-3" id="text-7-1">
<p><a href="#sec-8-1-9">AcademicArticle</a>(Articolo in riviste…) <a href="#sec-8-1-8">Article</a>(Articolo in un volume…) <a href="#sec-8-1-10">AuthorList</a>(Elenco autori) <a href="#sec-8-1-6">Book</a>(Libro) <a href="#sec-8-1-24">CompilationForm</a>(Scheda bibliografica) <a href="#sec-8-1-4">DigitalDocument</a>(DocumentoDigitale) <a href="#sec-8-1-3">DigitalManifestation</a>(ManifestazioneDigitale) <a href="#sec-8-1-2">Document</a>(Documento) <a href="#sec-8-1-19">InProceedings</a>(In Atti) <a href="#sec-8-1-7">Journal</a>(Rivista) <a href="#sec-8-1-22">MediaType</a>(Tipo Media) <a href="#sec-8-1-21">Misc</a>(Varia) <a href="#sec-8-1-12">Organization</a>(Organizzazione o Organismo) <a href="#ContactPoint">Proceedings</a>(Atti) <a href="#sec-8-1-17">Proposition</a>(Progetto di ricerca) <a href="#sec-8-1-5">Publication</a>(Pubblicazione) <a href="#sec-8-1-23">ResearchInstitute</a>(Istituto di ricerca) <a href="#sec-8-1-1">Resource</a>(Risorsa) <a href="#sec-8-1-11">Thesis</a>(Tesi) <a href="#sec-8-1-20">Unpublished</a>(Tesi) <a href="#sec-8-1-13">University</a>(Nome dell'Università) <a href="#sec-8-1-15">WebPage</a>(Pagina web) <a href="#sec-8-1-16">WebSite</a>(Sito Web) <a href="#sec-8-1-14">WorkCollection</a>(Collana)
</p></div>
</div>
<div id="outline-container-7-2" class="outline-3">
<h3 id="sec-7-2"><span class="section-number-3">7.2</span> PROPERTIES</h3>
<div class="outline-text-3" id="text-7-2">
<p><a href="#sec-8-2-28">compiledBy</a>(Dati Compilatore) <a href="#sec-8-2-11">containedInBook</a>(Titolo del volume) <a href="#sec-8-2-12">editedBy</a>(Curatore del volume) <a href="#sec-8-2-1">hasAuthors</a>(Autore) <a href="#sec-8-2-26">hasContentCategory</a>(Categorie di contenuto) <a href="#sec-8-2-27">hasDescription</a>(Descrizione e valutazione…) <a href="#sec-8-2-2">hasFirstName</a>(Nome) <a href="#sec-8-2-22">hasFormat</a>(Misure cm) <a href="#sec-8-2-31">hasID</a>(Identificatore) <a href="#sec-8-2-24">hasJournalName</a>(Titolo della rivista) <a href="#sec-8-2-30">hasLanguageCode</a>(Lingua)<a href="#sec-8-2-3">hasMiddleName</a>(Secondo nome) <a href="#sec-8-2-13">hasNumber</a>(Numero del volume, Numero) <a href="#sec-8-2-21">hasPageCount</a>(Pagine) <a href="#sec-8-2-23">hasPageRange</a>(Pagine da…a…) <a href="#sec-8-2-19">hasPublicationYear</a>(Anno) <a href="#sec-8-2-8">hasSubtitle</a>(Sottotitolo) <a href="#sec-8-2-4">hasSurname</a>(Cognome) <a href="#sec-8-2-5">hasSurnameMaternal</a>(Cognome (M)) <a href="#sec-8-2-7">hasTitle</a>(Titolo) <a href="#sec-8-2-29">hasURL</a>(URL) <a href="#sec-8-2-14">hasVolumeID</a>(Numero della collana) <a href="#sec-8-2-16">inCity</a>(Città) <a href="#sec-8-2-15">inCountry</a>(Nazione di pubblicazione, di presentazione) <a href="#sec-8-2-9">inSeries</a>([in] collana) <a href="#sec-8-2-25">isAboutCountry</a>(Nazione principale di cui si tratta) <a href="#sec-8-2-6">isAuthorCategory</a>(Tipo autore) <a href="#sec-8-2-20">isEdition</a>(Numero di edizione) <a href="#sec-8-2-18">isVolume</a>(Annata) <a href="#sec-8-2-17">publishedBy</a>(Editrice)
</p></div>
</div>
</div>
<div id="outline-container-8" class="outline-2">
<h2 id="sec-8"><span class="section-number-2">8</span> All Classes and properties</h2>
<div class="outline-text-2" id="text-8">
</div>
<div id="outline-container-8-1" class="outline-3">
<h3 id="sec-8-1"><span class="section-number-3">8.1</span> CLASSES</h3>
<div class="outline-text-3" id="text-8-1">
</div>
<div id="outline-container-8-1-1" class="outline-4">
<h4 id="sec-8-1-1"><span class="section-number-4">8.1.1</span> <span class="target">Resource</span></h4>
<div class="outline-text-4" id="text-8-1-1">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Resource">http://www.sdb.org/vocabulary/acssa#Resource</a>
</p>
<p>
<b>is defined by</b>: <a href="http://www.w3.org/2000/01/rdf-schema">http://www.w3.org/2000/01/rdf-schema</a>#
</p>
<p>
<b>preferred label</b>: Resource (en)
</p>
<p>
<b>etichetta preferita</b>: Risorsa (it)
</p>
<p>
<b>definition</b>: All things described by RDF are called
resources, and are instances of the class rdfs:Resource. This is the
class of everything. All other classes are subclasses of this class
(en)
</p>
<p>
<b>definizione</b>: Tutte le cose descritte da RDF si chiamano
risorse, e sono istanze della classe rdfs:Resource. Questa è la classe
di ogni cosa. Tutte le altre classi sono sottoclassi di questa classe
(it)
</p></div>
</div>
<div id="outline-container-8-1-2" class="outline-4">
<h4 id="sec-8-1-2"><span class="section-number-4">8.1.2</span> <span class="target">Document</span></h4>
<div class="outline-text-4" id="text-8-1-2">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Document">http://www.sdb.org/vocabulary/acssa#Document</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/ontology/bibo/Document">http://purl.org/ontology/bibo/Document</a>
</p>
<p>
<b>preferred label</b>: Document (en)
</p>
<p>
<b>etichetta preferita</b>: Documento (it)
</p>
<p>
<b>definition</b>: A document is a bounded physical
representation of body of information designed with the capacity (and
usually intent) to communicate. A document may manifest symbolic,
diagrammatic or sensory-representational information (en)
</p>
<p>
<b>definizione</b>: Un documento è una rappresentazione limitata
fisica del corpo di informazioni progettato con la capacità (e di
solito l'intento) di comunicare qualcosa. Un documento può manifestarsi
in informazioni simboliche, o diagrammatiche, oppure di tipo
sensoriale-rappresentative (it)
</p>
</div>
</div>
<div id="outline-container-8-1-3" class="outline-4">
<h4 id="sec-8-1-3"><span class="section-number-4">8.1.3</span> <span class="target">DigitalManifestation</span></h4>
<div class="outline-text-4" id="text-8-1-3">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#DigitalManifestation">http://www.sdb.org/vocabulary/acssa#DigitalManifestation</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/spar/fabio/DigitalManifestation">http://purl.org/spar/fabio/DigitalManifestation</a>
</p>
<p>
<b>preferred label</b>: Digital Manifestation (en)
</p>
<p>
<b>etichetta preferita</b>: Manifestazione digitale (it)
</p>
<p>
<b>definition</b>: A manifestation that represents data in binary form, encoding the data as a series of 0s and 1s (en)
</p>
<p>
<b>definizione</b>: Una manifestazione che rappresenta i dati in forma binaria, codifica i dati come una serie di 0 e 1 (it)
</p>
</div>
</div>
<div id="outline-container-8-1-4" class="outline-4">
<h4 id="sec-8-1-4"><span class="section-number-4">8.1.4</span> <span class="target">DigitalDocument</span></h4>
<div class="outline-text-4" id="text-8-1-4">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#DigitalDocument">http://www.sdb.org/vocabulary/acssa#DigitalDocument</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/spar/fabio/DigitalDocument">http://purl.org/spar/fabio/DigitalDocument</a>
</p>
<p>
<b>preferred label</b>: Digital Document (en)
</p>
<p>
<b>etichetta preferita</b>: Documento digitale (it)
</p>
<p>
<b>definition</b>: This class is restricted to documents (books,
studies, journals etc.) which exist originally or solely as digital
items. If they are subsequently published (e.g. in papar form) the
digital version should also be preserved. (en)
</p>
<p>
<b>definizione</b>: Questa classe è limitata ai documenti (libri,
saggi, riviste ecc.) che esistono originariamente o solamente in forma
digitale. Se successivamente vengono pubblicati, bisogna sempre
conservare la forma originaria digitale (it)
</p>
</div>
</div>
<div id="outline-container-8-1-5" class="outline-4">
<h4 id="sec-8-1-5"><span class="section-number-4">8.1.5</span> <span class="target">Publication</span></h4>
<div class="outline-text-4" id="text-8-1-5">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Publication">http://www.sdb.org/vocabulary/acssa#Publication</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#Publication">http://sw-portal.deri.org/ontologies/swportal#Publication</a>
</p>
<p>
<b>preferred label</b>: Publication (en)
</p>
<p>
<b>etichetta preferita</b>: Pubblicazione (it)
</p>
<p>
<b>definition</b>: Publications are both individual documents and collections of documents such as series, journals, etc. (en)
</p>
<p>
<b>definizione</b>: Le pubblicazioni sono sia i singoli documenti che le collezioni di documenti quali collane, riviste, ecc (it)
</p>
</div>
</div>
<div id="outline-container-8-1-6" class="outline-4">
<h4 id="sec-8-1-6"><span class="section-number-4">8.1.6</span> <span class="target">Book</span></h4>
<div class="outline-text-4" id="text-8-1-6">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Book">http://www.sdb.org/vocabulary/acssa#Book</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/ontology/bibo/Book">http://purl.org/ontology/bibo/Book</a>
</p>
<p>
<b>preferred label</b>: Book (en)
</p>
<p>
<b>etichetta preferita</b>: Libro (it)
</p>
<p>
<b>definition</b>: A written or printed work of fiction or nonfiction, usually on sheets of paper fastened or bound together within covers (en)
</p>
<p>
<b>definizione</b>: Un'opera scritta o stampata di narrativa o
di saggistica, di solito su fogli di carta fissati o legati insieme in
copertine (it)
</p>
<p>
<b>sub class of</b>: Document
</p></div>
</div>
<div id="outline-container-8-1-7" class="outline-4">
<h4 id="sec-8-1-7"><span class="section-number-4">8.1.7</span> <span class="target">Journal</span></h4>
<div class="outline-text-4" id="text-8-1-7">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Journal">http://www.sdb.org/vocabulary/acssa#Journal</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/ontology/bibo/Journal">http://purl.org/ontology/bibo/Journal</a>
</p>
<p>
<b>preferred label</b>: Journal (en)
</p>
<p>
<b>etichetta preferita</b>: Rivista academica (it)
</p>
<p>
<b>definition</b>: A periodical of scholarly journal Articles (en)
</p>
<p>
<b>definizione</b>: Un periodico di articoli di tipo scientifico (it)
</p>
<p>
<b>sub class of</b>: Document or Digital Document
</p></div>
</div>
<div id="outline-container-8-1-8" class="outline-4">
<h4 id="sec-8-1-8"><span class="section-number-4">8.1.8</span> <span class="target">Article</span></h4>
<div class="outline-text-4" id="text-8-1-8">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Article">http://www.sdb.org/vocabulary/acssa#Article</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/ontology/bibo/Article">http://purl.org/ontology/bibo/Article</a>
</p>
<p>
<b>preferred label</b>: Article (en)
</p>
<p>
<b>etichetta preferita</b>: Articolo in un volume di più autori (it)
</p>
<p>
<b>definition</b>: A written composition in prose, usually
nonfiction, on a specific topic, forming an independent part of a book
or other publication, as a newspaper or magazine (en)
</p>
<p>
<b>definizione</b>: Una composizione scritta in prosa, di solito
saggistica, su un argomento specifico, formando una parte indipendente
di un libro o altra pubblicazione, come un giornale o una rivista (it)
</p>
<p>
<b>sub class of</b>: Document or Digital Document
</p></div>
</div>
<div id="outline-container-8-1-9" class="outline-4">
<h4 id="sec-8-1-9"><span class="section-number-4">8.1.9</span> <span class="target">AcademicArticle</span></h4>
<div class="outline-text-4" id="text-8-1-9">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#AcademicArticle">http://www.sdb.org/vocabulary/acssa#AcademicArticle</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/ontology/bibo/AcademicArticle">http://purl.org/ontology/bibo/AcademicArticle</a>
</p>
<p>
<b>preferred label</b>: Academic Article (en)
</p>
<p>
<b>etichetta preferita</b>: Articolo in riviste scientifiche o di alta divulgazione (it)
</p>
<p>
<b>definition</b>: A scholarly academic article typically published in a journal (en)
</p>
<p>
<b>definizione</b>: Un articolo scientifico accademico tipicamente pubblicato in una rivista (it)
</p>
<p>
<b>sub class of</b>: Article
</p></div>
</div>
<div id="outline-container-8-1-10" class="outline-4">
<h4 id="sec-8-1-10"><span class="section-number-4">8.1.10</span> <span class="target">AuthorList</span></h4>
<div class="outline-text-4" id="text-8-1-10">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#AuthorList">http://www.sdb.org/vocabulary/acssa#AuthorList</a>
</p>
<p>
<b>preferred label</b>: List of Authors (en)
</p>
<p>
<b>etichetta preferita</b>: Elenco autori (it)
</p>
<p>
<b>definition</b>: A list of one or more authors of a document possibly though not essentially in order of importance (en)
</p>
<p>
<b>definizione</b>: Un elenco che contiene uno o di più autori di un documento anche se forse non essenzialmente in ordine di importanza (it)
</p></div>
</div>
<div id="outline-container-8-1-11" class="outline-4">
<h4 id="sec-8-1-11"><span class="section-number-4">8.1.11</span> <span class="target">Thesis</span></h4>
<div class="outline-text-4" id="text-8-1-11">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Thesis">http://www.sdb.org/vocabulary/acssa#Thesis</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/ontology/bibo/Thesis">http://purl.org/ontology/bibo/Thesis</a>
</p>
<p>
<b>preferred label</b>: Thesis (en)
</p>
<p>
<b>etichetta preferita</b>: Tesi (it)
</p>
<p>
<b>definition</b>: A document created to summarize research findings associated with the completion of an academic degree (en)
</p>
<p>
<b>definizione</b>: Un documento creato per riassumere i risultati delle ricerche legate alla realizzazione di un titolo accademico (it)
</p>
<p>
<b>sub class of</b>: Document or Digital Document
</p>
</div>
</div>
<div id="outline-container-8-1-12" class="outline-4">
<h4 id="sec-8-1-12"><span class="section-number-4">8.1.12</span> <span class="target">Organization</span></h4>
<div class="outline-text-4" id="text-8-1-12">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Organization">http://www.sdb.org/vocabulary/acssa#Organization</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#Organization">http://sw-portal.deri.org/ontologies/swportal#Organization</a>
</p>
<p>
<b>preferred label</b>: Organization (en)
</p>
<p>
<b>eticehtta preferita</b>: Organizzazione (it)
</p>
<p>
<b>alternative preferred label</b>: Organismo (it)
</p>
<p>
<b>definition</b>: This class represents an organization with a formal legal status (en)
</p>
<p>
<b>definizione</b>: Questa classe rappresenta un'organizzazione con status giuridico formale (it)
</p></div>
</div>
<div id="outline-container-8-1-13" class="outline-4">
<h4 id="sec-8-1-13"><span class="section-number-4">8.1.13</span> <span class="target">University</span></h4>
<div class="outline-text-4" id="text-8-1-13">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#University">http://www.sdb.org/vocabulary/acssa#University</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#University">http://sw-portal.deri.org/ontologies/swportal#University</a>
</p>
<p>
<b>preferred label</b>: University (en)
</p>
<p>
<b>preferred label</b>: Nome dell'Università (it)
</p>
<p>
<b>etichetta preferita</b>: This class represents universities.
We decided to introduce two different classes to distinguish between
universities and independent research institutes. The main difference
is actually the different kinds of independence. In contrast to a
university, a research institute is independent from the rigorous
bureaucracy of the universities. On the other hand, a university is
independent from the economy and the financial support of companies.
Thus, the kind of research an independent research institute practises
is generally more application-oriented (en)
</p>
<p>
<b>definizione</b>: Questa classe rappresenta le università.
Abbiamo deciso di introdurre due classi diverse di distinguere tra
università e istituti di ricerca indipendenti. La differenza principale
è in realtà i diversi tipi di indipendenza. A differenza di una
università, un istituto di ricerca è indipendente dalla burocrazia
rigorosa delle università. D'altra parte, una università è indipendente
dall'economia e il sostegno finanziario delle imprese. Così, il tipo di
ricerca realizzata da un istituto di ricerca indipendente è
generalmente più orientata alle applicazioni (it)
</p>
<p>
<b>sub class of</b>: Organization
</p>
</div>
</div>
<div id="outline-container-8-1-14" class="outline-4">
<h4 id="sec-8-1-14"><span class="section-number-4">8.1.14</span> <span class="target">WorkCollection</span></h4>
<div class="outline-text-4" id="text-8-1-14">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#WorkCollection">http://www.sdb.org/vocabulary/acssa#WorkCollection</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/spar/fabio/WorkCollection">http://purl.org/spar/fabio/WorkCollection</a>
</p>
<p>
<b>preferred label</b>: Work Collection (en)
</p>
<p>
<b>etichetta preferita</b>: Collana di opere (it)
</p>
<p>
<b>definition</b>: A collection of works (en)
</p>
<p>
<b>definizione</b>: Una collana di opere (it)
</p>
<p>
<b>sub class of</b>: Document or Digital Document
</p></div>
</div>
<div id="outline-container-8-1-15" class="outline-4">
<h4 id="sec-8-1-15"><span class="section-number-4">8.1.15</span> <span class="target">WebPage</span></h4>
<div class="outline-text-4" id="text-8-1-15">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#WebPage">http://www.sdb.org/vocabulary/acssa#WebPage</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/spar/fabio/WebPage">http://purl.org/spar/fabio/WebPage</a>
</p>
<p>
<b>preferred label</b>: Web Page (en)
</p>
<p>
<b>etichetta preferita</b>: Pagina Web (it)
</p>
<p>
<b>definition</b>: A Web manifestation usually identified by a
Uniform Resource Identifier (URI), and made accessible to a user by
means of the Hypertext Transport Protocol (HTTP) in a Web browser
window. Several interlinked web pages hosted together on a Web server
and accessed through a single domain name or IP address constitute a
web site (en)
</p>
<p>
<b>definizione</b>: Una manifestazione Web di solito identificato
da un Uniform Resource Identifier (URI), e resa accessibile ad un
utente per mezzo della Hypertext Transport Protocol (HTTP) in una
finestra del browser. Diverse pagine web interconnesse ospitato insieme
su un server Web e accessibili attraverso un singolo nome di dominio o
l'indirizzo IP costituiscono un sito web (it)
</p>
<p>
<b>sub class of</b>: Digital Manifestation
</p>
</div>
</div>
<div id="outline-container-8-1-16" class="outline-4">
<h4 id="sec-8-1-16"><span class="section-number-4">8.1.16</span> <span class="target">WebSite</span></h4>
<div class="outline-text-4" id="text-8-1-16">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#WebSite">http://www.sdb.org/vocabulary/acssa#WebSite</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/spar/fabio/WebSite">http://purl.org/spar/fabio/WebSite</a>
</p>
<p>
<b>preferred label</b>: Web Site (en)
</p>
<p>
<b>etichetta preferita</b>: Sito Web (it)
</p>
<p>
<b>definition</b>: A collection of related web pages containing
text, images, videos and/or other digital assets that are addressed
relative to a common Uniform Resource Locator (URL) also known as a
Uniform Resource Indicator (URI). A web site is hosted on at least one
web server, accessible via a network such as the Internet or a private
local area network (en)
</p>
<p>
<b>definizione</b>: Una raccolta di pagine web correlate, che
contengono testo, immagini, video e / o altre risorse digitali che si
rivolgono rispetto a un comune Uniform Resource Locator (URL) noto
anche come un Uniform Resource Indicator (URI). Un sito web è ospitato
su almeno un server web, accessibile attraverso una rete come Internet
o una rete privata locale (it)
</p>
<p>
<b>sub class of</b>: Digital Manifestation
</p></div>
</div>
<div id="outline-container-8-1-17" class="outline-4">
<h4 id="sec-8-1-17"><span class="section-number-4">8.1.17</span> <span class="target">Proposition</span></h4>
<div class="outline-text-4" id="text-8-1-17">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Proposition">http://www.sdb.org/vocabulary/acssa#Proposition</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/spar/fabio/Proposition">http://purl.org/spar/fabio/Proposition</a>
</p>
<p>
<b>preferred label</b>: Thesis Proposal (en)
</p>
<p>
<b>etichetta preferita</b>: Progetto di tesi (it)
</p>
<p>
<b>definition</b>: A proposal or proposition of a new conceptualization, hypothesis, idea or theory (en)
</p>
<p>
<b>definizione</b>: Una proposta o un progetto di una nuova concettualizzazione, ipotesi, idea o teoria (it)
</p>
<p>
<b>sub class of</b>: Document or Digital Document
</p>
</div>
</div>
<div id="outline-container-8-1-18" class="outline-4">
<h4 id="sec-8-1-18"><span class="section-number-4">8.1.18</span> <span class="target">Proceedings</span></h4>
<div class="outline-text-4" id="text-8-1-18">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Proceedings">http://www.sdb.org/vocabulary/acssa#Proceedings</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#Proceedings">http://sw-portal.deri.org/ontologies/swportal#Proceedings</a>
</p>
<p>
<b>preferred Label</b>: Proceeedings (en)
</p>
<p>
<b>etichetta preferita</b>: Atti (it)
</p>
<p>
<b>definition</b>: The proceedings of a conference (en)
</p>
<p>
<b>definizione</b>: Gli atti di un convegno
</p>
<p>
<b>sub class of</b> Document
</p></div>
</div>
<div id="outline-container-8-1-19" class="outline-4">
<h4 id="sec-8-1-19"><span class="section-number-4">8.1.19</span> <span class="target">InProceedings</span></h4>
<div class="outline-text-4" id="text-8-1-19">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#InProceedings">http://www.sdb.org/vocabulary/acssa#InProceedings</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#Inproceedings">http://sw-portal.deri.org/ontologies/swportal#Inproceedings</a>
</p>
<p>
<b>preferred label</b>: In proceedings (en)
</p>
<p>
<b>etichetta preferita</b>: In atti (it)
</p>
<p>
<b>definition</b>: An article in a conference proceedings (i.e. Proceedings) (en)
</p>
<p>
<b>definizione</b>: Un articolo negli atti di un convegno (it)
</p>
<p>
<b>sub class of</b>: Proceedings
</p>
</div>
</div>
<div id="outline-container-8-1-20" class="outline-4">
<h4 id="sec-8-1-20"><span class="section-number-4">8.1.20</span> <span class="target">Unpublished</span></h4>
<div class="outline-text-4" id="text-8-1-20">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Unpublished">http://www.sdb.org/vocabulary/acssa#Unpublished</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#Unpublished">http://sw-portal.deri.org/ontologies/swportal#Unpublished</a>
</p>
<p>
<b>preferred label</b>: Unpublished (en)
</p>
<p>
<b>etichetta preferita</b>: Inedito (it)
</p>
<p>
<b>definition</b>: A document which does have an author and title, but hasn't been formally published (en)
</p>
<p>
<b>definizione</b>: Un documento che ha un autore e titolo, ma non è stato formalmente pubblicato (it)
</p>
<p>
<b>sub class of</b>: Document or Digital Document
</p>
</div>
</div>
<div id="outline-container-8-1-21" class="outline-4">
<h4 id="sec-8-1-21"><span class="section-number-4">8.1.21</span> <span class="target">Misc</span></h4>
<div class="outline-text-4" id="text-8-1-21">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#Misc">http://www.sdb.org/vocabulary/acssa#Misc</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#Misc">http://sw-portal.deri.org/ontologies/swportal#Misc</a>
</p>
<p>
<b>preferred label</b>: Miscellaneous (en)
</p>
<p>
<b>etichetta preferita</b>: Varie (it)
</p>
<p>
<b>definition</b>: Some sort of publication which doesn't fit into any of the other concepts (en)
</p>
<p>
<b>definizione</b>: Una sorta di pubblicazione che non rientra in nessuna delle altre concezioni (it)
</p>
<p>
<b>sub class of</b>: Document
</p></div>
</div>
<div id="outline-container-8-1-22" class="outline-4">
<h4 id="sec-8-1-22"><span class="section-number-4">8.1.22</span> <span class="target">MediaType</span></h4>
<div class="outline-text-4" id="text-8-1-22">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#MediaType">http://www.sdb.org/vocabulary/acssa#MediaType</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/dc/terms/MediaType">http://purl.org/dc/terms/MediaType</a>
</p>
<p>
<b>preferred label</b>: Media Type (en)
</p>
<p>
<b>etichetta preferita</b>: Tipo media (it)
</p>
<p>
<b>definition</b>: A file format or physical medium (en)
</p>
<p>
<b>definizione</b>: Un formato di file o altro mezzo fisico (it)
</p>
</div>
</div>
<div id="outline-container-8-1-23" class="outline-4">
<h4 id="sec-8-1-23"><span class="section-number-4">8.1.23</span> <span class="target">ResearchInstitute</span></h4>
<div class="outline-text-4" id="text-8-1-23">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#ResearchInstitute">http://www.sdb.org/vocabulary/acssa#ResearchInstitute</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#ResearchInstitute">http://sw-portal.deri.org/ontologies/swportal#ResearchInstitute</a>
</p>
<p>
<b>preferred label</b>: Research Institute (en)
</p>
<p>
<b>etichetta preferita</b>: Nome dell'Istituto (it)
</p>
<p>
<b>definition</b>: This class represents research institutes. These organizations have special research areas (en)
</p>
<p>
<b>definizione</b>: Questa classe rappresenta gli istituti di ricerca. Queste organizzazioni hanno aree speciali di ricerca (it)
</p>
<p>
<b>sub class of</b> Organization
</p></div>
</div>
<div id="outline-container-8-1-24" class="outline-4">
<h4 id="sec-8-1-24"><span class="section-number-4">8.1.24</span> <span class="target">CompilationForm</span></h4>
<div class="outline-text-4" id="text-8-1-24">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#CompilationForm">http://www.sdb.org/vocabulary/acssa#CompilationForm</a>
</p>
<p>
<b>preferred label</b>: Bibliographic Record (en)
</p>
<p>
<b>etichetta preferita</b>: Scheda bibliografica [di storiografia salesiana] (it)
</p>
<p>
<b>definition</b>: The form (paper or digital) which is used to compile metadata for a bibliographic record (en)
</p>
<p>
<b>definizione</b>: Il modulo o la scheda (di cartacea o digitale) in uso per compilare i metadati per una registrazione bibliografica (it)
</p>
<p>
<b>sub class of</b>: Document
</p></div>
</div>
</div>
<div id="outline-container-8-2" class="outline-3">
<h3 id="sec-8-2"><span class="section-number-3">8.2</span> PROPERTIES</h3>
<div class="outline-text-3" id="text-8-2">
</div>
<div id="outline-container-8-2-1" class="outline-4">
<h4 id="sec-8-2-1"><span class="section-number-4">8.2.1</span> <span class="target">hasAuthors</span></h4>
<div class="outline-text-4" id="text-8-2-1">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasAuthors">http://www.sdb.org/vocabulary/acssa#hasAuthors</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#hasAuthors">http://sw-portal.deri.org/ontologies/swportal#hasAuthors</a>
</p>
<p>
<b>preferred label</b>: Author (en)
</p>
<p>
<b>etichetta preferita</b>: Autore (it)
</p>
<p>
<b>definition</b>: The author or authors of a document. For multiple authors, use multiple values (en)
</p>
<p>
<b>definizione</b>: L'autore o gli autori di un documento. Per più di un autori, utilizzare valori multipli (it)
</p>
<p>
<b>domain</b>: Document or sub classes
</p>
<p>
<b>domain</b>: Digital Document or sub classes
</p>
<p>
<b>range</b>: xsd:string
</p>
</div>
</div>
<div id="outline-container-8-2-2" class="outline-4">
<h4 id="sec-8-2-2"><span class="section-number-4">8.2.2</span> <span class="target">hasFirstName</span></h4>
<div class="outline-text-4" id="text-8-2-2">
<p> <b>URI</b>: <a href="http://www.sdb.org/acssa#hasFirstName">http://www.sdb.org/acssa#hasFirstName</a>
</p>
<p>
<b>preferred label</b>: First name (en)
</p>
<p>
<b>etichetta preferita</b>: Nome (it)
</p>
<p>
<b>definition</b>: Christian or given name of person (en)
</p>
<p>
<b>definizione</b>: Nome battesimale o nome della persona (it)
</p>
<p>
<b>domain</b>: AuthorList
</p>
<p>
<b>range</b>: xsd:string
</p></div>
</div>
<div id="outline-container-8-2-3" class="outline-4">
<h4 id="sec-8-2-3"><span class="section-number-4">8.2.3</span> <span class="target">hasMiddleName</span></h4>
<div class="outline-text-4" id="text-8-2-3">
<p> <b>URI</b>: <a href="http://www.sdb.org/acssa#hasMiddleName">http://www.sdb.org/acssa#hasMiddleName</a>
</p>
<p>
<b>preferred label</b>: Middle name (en)
</p>
<p>
<b>etichetta preferita</b>: Secondo nome (it)
</p>
<p>
<b>definition</b>: Middle name of person (en)
</p>
<p>
<b>definizione</b>: Secondo nome della persona (it)
</p>
<p>
<b>domain</b>: AuthorList
</p>
<p>
<b>range</b>: xsd:string
</p>
</div>
</div>
<div id="outline-container-8-2-4" class="outline-4">
<h4 id="sec-8-2-4"><span class="section-number-4">8.2.4</span> <span class="target">hasSurname</span></h4>
<div class="outline-text-4" id="text-8-2-4">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasSurname">http://www.sdb.org/vocabulary/acssa#hasSurname</a>
</p>
<p>
<b>preferred label</b>: Surname (en)
</p>
<p>
<b>alternative label</b>: Surname (P) (en)
</p>
<p>
<b>etichetta preferita</b>: Cognome (it)
</p>
<p>
<b>etichetta alternativa</b>: Cognome (P) (it)
</p>
<p>
<b>definition</b>: Surname of person. In cultures that normally provide the paternal and maternal surname, this one applies to the paternal (en)
</p>
<p>
<b>definizione</b>: Cognome della persona. Nelle culture dove
esistono sia un cognome paterno che materno, questa etichetta si
applica al cognome paterno (it)
</p>
<p>
<b>domain</b>: AuthorList
</p>
<p>
<b>range</b>: xsd:string
</p></div>
</div>
<div id="outline-container-8-2-5" class="outline-4">
<h4 id="sec-8-2-5"><span class="section-number-4">8.2.5</span> <span class="target">hasSurnameMaternal</span></h4>
<div class="outline-text-4" id="text-8-2-5">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasSurnameMaternal">http://www.sdb.org/vocabulary/acssa#hasSurnameMaternal</a>
</p>
<p>
<b>preferred label</b>: Surname (M) (en)
</p>
<p>
<b>etichetta preferita</b>: Cognome (M) (it)
</p>
<p>
<b>definition</b>: Surname of person. In cultures that normally provide the paternal and maternal surname, this one applies to the maternal (en)
</p>
<p>
<b>definizione</b>: Cognome della persona. Nelle culture dove
esistono sia un cognome paterno chje materno, questa etichetta si
applica al cognome materno (it)
</p>
<p>
<b>domain</b>: AuthorList
</p>
<p>
<b>range</b>: xsd:string
</p></div>
</div>
<div id="outline-container-8-2-6" class="outline-4">
<h4 id="sec-8-2-6"><span class="section-number-4">8.2.6</span> <span class="target">isAuthorCategory</span></h4>
<div class="outline-text-4" id="text-8-2-6">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#isAuthorCategory">http://www.sdb.org/vocabulary/acssa#isAuthorCategory</a>
</p>
<p>
<b>preferred label</b>: Author category (en)
</p>
<p>
<b>etichetta preferita</b>: Tipo autore (it)
</p>
<p>
<b>definition</b>: A controlled list
</p>
<p>
<b>definizione</b>: Un elenco controllato
</p>
<p>
<b>domain</b>: AuthorList
</p>
<p>
<b>range</b>: A list which includes, for now, SDB, FMA, Sacerdote (Priest), Religioso/a(Religious), Laico/a(Lay person)
</p></div>
</div>
<div id="outline-container-8-2-7" class="outline-4">
<h4 id="sec-8-2-7"><span class="section-number-4">8.2.7</span> <span class="target">hasTitle</span></h4>
<div class="outline-text-4" id="text-8-2-7">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasTitle">http://www.sdb.org/vocabulary/acssa#hasTitle</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/dc/terms/title">http://purl.org/dc/terms/title</a>
</p>
<p>
<b>preferred label</b>: Title (en)
</p>
<p>
<b>etichetta preferita</b>: Titolo (it)
</p>
<p>
<b>definition</b>: A name given to the resource (en)
</p>
<p>
<b>definizione</b>: Un nome assegnato alla risorsa (it)
</p>
<p>
<b>domain</b>: Document or Digital Document
</p>
<p>
<b>range</b>: xsd:string
</p></div>
</div>
<div id="outline-container-8-2-8" class="outline-4">
<h4 id="sec-8-2-8"><span class="section-number-4">8.2.8</span> <span class="target">hasSubtitle</span></h4>
<div class="outline-text-4" id="text-8-2-8">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasSubtitle">http://www.sdb.org/vocabulary/acssa#hasSubtitle</a>
</p>
<p>
<b>preferred label</b>: Subtitle (en)
</p>
<p>
<b>etichetta preferita</b>: Sottotitolo (it)
</p>
<p>
<b>definition</b>: A secondary title that follows the main title of a Document or Digital Document (en)
</p>
<p>
<b>definizione</b>: Un titolo secondario che segue il titolo principale di un documento o di un documento digitale (it)
</p>
<p>
<b>domain</b>: Document or Digital Document
</p>
<p>
<b>range</b>: xsd:string
</p></div>
</div>
<div id="outline-container-8-2-9" class="outline-4">
<h4 id="sec-8-2-9"><span class="section-number-4">8.2.9</span> <span class="target">inSeries</span></h4>
<div class="outline-text-4" id="text-8-2-9">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#inSeries">http://www.sdb.org/vocabulary/acssa#inSeries</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#inSeries">http://sw-portal.deri.org/ontologies/swportal#inSeries</a>
</p>
<p>
<b>preferred label</b>: In Series (en)
</p>
<p>
<b>etichetta preferita</b>: In collana (it)
</p>
<p>
<b>definition</b>: The instance of Series in which this document was published (en)
</p>
<p>
<b>definizione</b>: L'istanza di Collana nella quale è stato pubblicato questo documento (it)
</p>
<p>
<b>domain</b>: Document
</p>
<p>
<b>range</b>: Series
</p></div>
</div>
<div id="outline-container-8-2-10" class="outline-4">
<h4 id="sec-8-2-10"><span class="section-number-4">8.2.10</span> <span class="target">hasType</span></h4>
<div class="outline-text-4" id="text-8-2-10">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasType">http://www.sdb.org/vocabulary/acssa#hasType</a>
</p>
<p>
<b>preferred label</b>: Work type (en)
</p>
<p>
<b>etichetta preferita</b>: Tipologia di lavoro (it)
</p>
<p>
<b>definition</b>: An indication of whether the work is original
or in translation, or whether it (as an academic item) is in a
scientific or broad audience category (e.g. published in a scientific
or more general Journal (en)
</p>
<p>
<b>definizione</b>: L'indicazione se l'opera è originale o in
traduzione, o se (come articolo accademico) è in una categoria
scientifica o di raggio più ampio (p.e. pubblicato in una rivista
scientifica o di tipo generale (it)
</p>
<p>
<b>domain</b>: Document
</p>
<p>
<b>range</b>: Controlled vocabulary: original (originale),
translation (traduzione), article in academic journal or book (articolo
in rivista accademica o volume accademico), article for broad audience
(articolo di alta divulgazione) </p></div>
</div>
<div id="outline-container-8-2-11" class="outline-4">
<h4 id="sec-8-2-11"><span class="section-number-4">8.2.11</span> <span class="target">containedInBook</span></h4>
<div class="outline-text-4" id="text-8-2-11">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#containedInBook">http://www.sdb.org/vocabulary/acssa#containedInBook</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#containedInBook">http://sw-portal.deri.org/ontologies/swportal#containedInBook</a>
</p>
<p>
<b>preferred label</b>: Contained in Book (en)
</p>
<p>
<b>etichetta preferita</b>: Titolo del volume (it)
</p>
<p>
<b>definition</b>: The Book in which an Article or contribution is contained. (en)
</p>
<p>
<b>definizione</b>: Il libro in cui è contenuto un articolo o contributo. (it)
</p>
<p>
<b>domain</b>: Article
</p>
<p>
<b>range</b>: Book
</p>
</div>
</div>
<div id="outline-container-8-2-12" class="outline-4">
<h4 id="sec-8-2-12"><span class="section-number-4">8.2.12</span> <span class="target">editedBy</span></h4>
<div class="outline-text-4" id="text-8-2-12">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#editedBy">http://www.sdb.org/vocabulary/acssa#editedBy</a>
</p>
<p>
<b>preferred label</b>: Editor (en)
</p>
<p>
<b>etichetta preferita</b>: Curatore del volume (it)
</p>
<p>
<b>definition</b>: Editors review, rewrite, and edit the work of writers (en)
</p>
<p>
<b>definizione</b>: Il Curatore revisione, riscrive e modifica il lavoro di scrittori (it)
</p>
<p>
<b>domain</b>: Book, Journal, Proceedings
</p>
<p>
<b>range</b>: AuthorList
</p></div>
</div>
<div id="outline-container-8-2-13" class="outline-4">
<h4 id="sec-8-2-13"><span class="section-number-4">8.2.13</span> <span class="target">hasNumber</span></h4>
<div class="outline-text-4" id="text-8-2-13">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasNumber">http://www.sdb.org/vocabulary/acssa#hasNumber</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/spar/fabio/hasNumber">http://purl.org/spar/fabio/hasNumber</a>
</p>
<p>
<b>preferred label</b>: Number
</p>
<p>
<b>etichetta preferita</b>: Numero del volume (it)
</p>
<p>
<b>etichetta alternativa</b>: Numero (it)
</p>
<p>
<b>definition</b>: An integer that identifies the number of work
within a particular context, for example a book in a book series, a
chapter in a document, a volume in a journal (en)
</p>
<p>
<b>definizione</b>: Un numero intero che identifica il numero di
lavori in un contesto particolare, ad esempio un libro in una serie di
libri, un capitolo in un documento, un volume in una rivista (it)
</p>
<p>
<b>domain</b>: Document
</p>
<p>
<b>range</b>: xsd:nonNegativeInteger
</p>
</div>
</div>
<div id="outline-container-8-2-14" class="outline-4">
<h4 id="sec-8-2-14"><span class="section-number-4">8.2.14</span> <span class="target">hasVolumeID</span></h4>
<div class="outline-text-4" id="text-8-2-14">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasVolumeID">http://www.sdb.org/vocabulary/acssa#hasVolumeID</a>
</p>
<p>
<b>preferred label</b>: Volume ID (en)
</p>
<p>
<b>etichetta preferita</b>: Numero della collana (it)
</p>
<p>
<b>definition</b>: An integer that identifies the number of a book in a Series. This is more specific than hasNumber (en)
</p>
<p>
<b>definizione</b>: Un numero intero che identifica il numero di un libro in una collana. Più specifico di hasNumber (it)
</p>
<p>
<b>domain</b>: Series
</p>
<p>
<b>range</b>: xsd:nonNegativeInteger
</p></div>
</div>
<div id="outline-container-8-2-15" class="outline-4">
<h4 id="sec-8-2-15"><span class="section-number-4">8.2.15</span> <span class="target">inCountry</span></h4>
<div class="outline-text-4" id="text-8-2-15">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#inCountry">http://www.sdb.org/vocabulary/acssa#inCountry</a>
</p>
<p>
<b>preferred label</b>: Country (en)
</p>
<p>
<b>etichetta preferita</b>: Nazione di pubblicazione (it)
</p>
<p>
<b>etichetta alternativa</b>: Nazione di presentazione (it)
</p>
<p>
<b>definition</b>: This class defines geographical bodies that are countries (en)
</p>
<p>
<b>definizione</b>: Questa classe definisce gli enti geografici che sono paesi (it)
</p>
<p>
<b>domain</b>: Publication
</p>
<p>
<b>range</b>: Values should follow a recognized standard such as country names or codes as listed in the ISO 3166 Code: <a href="http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html">http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html</a>. The names may be internationalized.
</p></div>
</div>
<div id="outline-container-8-2-16" class="outline-4">
<h4 id="sec-8-2-16"><span class="section-number-4">8.2.16</span> <span class="target">inCity</span></h4>
<div class="outline-text-4" id="text-8-2-16">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#inCity">http://www.sdb.org/vocabulary/acssa#inCity</a>
</p>
<p>
<b>preferred label</b>: City (en)
</p>
<p>
<b>etichetta preferita</b>: Città di pubblicazione (it)
</p>
<p>
<b>definition</b>: This class describes geographical bodies that are cities (en)
</p>
<p>
<b>definizione</b>: Questa classe definisce gli enti geografici che sono città (it)
</p>
<p>
<b>domain</b>: Publication
</p>
<p>
<b>range</b>: Values should follow a recognized standard such as country names or codes as listed in the Common Data Hub <a href="http://www.commondatahub.com/live/geography/city/key_cities_all_countries">http://www.commondatahub.com/live/geography/city/key_cities_all_countries</a>
</p>
</div>
</div>
<div id="outline-container-8-2-17" class="outline-4">
<h4 id="sec-8-2-17"><span class="section-number-4">8.2.17</span> <span class="target">publishedBy</span></h4>
<div class="outline-text-4" id="text-8-2-17">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#publishedBy">http://www.sdb.org/vocabulary/acssa#publishedBy</a>
</p>
<p>
<b>preferred label</b>: Publisher (en)
</p>
<p>
<b>etichetta preferita</b>: Editrice (it)
</p>
<p>
<b>definition</b>: The instance of Organization which published this document (en)
</p>
<p>
<b>definizione</b>: L'istanza di Organizzazione che ha pubblicato questo documento (it)
</p>
<p>
<b>domain</b>: Document
</p>
<p>
<b>range</b>: Organization
</p></div>
</div>
<div id="outline-container-8-2-18" class="outline-4">
<h4 id="sec-8-2-18"><span class="section-number-4">8.2.18</span> <span class="target">isVolume</span></h4>
<div class="outline-text-4" id="text-8-2-18">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#isVolume">http://www.sdb.org/vocabulary/acssa#isVolume</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#isVolume">http://sw-portal.deri.org/ontologies/swportal#isVolume</a>
</p>
<p>
<b>preferred label</b>: Volume (en)
</p>
<p>
<b>etichetta preferita</b>: Annata (it)
</p>
<p>
<b>definition</b>: The volume of a journal or a multi-volume book (en)
</p>
<p>
<b>definizione</b>: Il volume di una rivista o un libro in più volumi (it)
</p>
<p>
<b>domain</b>: Journal or Book
</p>
<p>
<b>range</b>: xsd:nonNegativeInteger
</p>
</div>
</div>
<div id="outline-container-8-2-19" class="outline-4">
<h4 id="sec-8-2-19"><span class="section-number-4">8.2.19</span> <span class="target">hasPublicationYear</span></h4>
<div class="outline-text-4" id="text-8-2-19">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasPublicationYear">http://www.sdb.org/vocabulary/acssa#hasPublicationYear</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/spar/fabio/hasPublicationYear">http://purl.org/spar/fabio/hasPublicationYear</a>
</p>
<p>
<b>preferred label</b>: Publication year (en)
</p>
<p>
<b>etichetta preferita</b>: Anno (it)
</p>
<p>
<b>definition</b>: The year in which a resource is published (en)
</p>
<p>
<b>definizione</b>: L'anno di pubblicazione di una risorsa (it)
</p>
<p>
<b>domain</b>: Book, Article or contribution in Journal or Book etc.
</p>
<p>
<b>range</b>: xsd:gYear
</p></div>
</div>
<div id="outline-container-8-2-20" class="outline-4">
<h4 id="sec-8-2-20"><span class="section-number-4">8.2.20</span> <span class="target">isEdition</span></h4>
<div class="outline-text-4" id="text-8-2-20">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#isEdition">http://www.sdb.org/vocabulary/acssa#isEdition</a>
</p>
<p>
<b>is defined by</b>: <a href="http://sw-portal.deri.org/ontologies/swportal#isEdition">http://sw-portal.deri.org/ontologies/swportal#isEdition</a>
</p>
<p>
<b>preferred label</b>: Edition (en)
</p>
<p>
<b>etichetta preferita</b>: Numero di edizione (it)
</p>
<p>
<b>definition</b>: The edition of a book – for example, 2. (en)
</p>
<p>
<b>definizione</b>: L'edizione di un libro – p.e. 2. (it)
</p>
<p>
<b>domain</b>: Book
</p>
<p>
<b>range</b>: xsd:nonNegativeInteger
</p></div>
</div>
<div id="outline-container-8-2-21" class="outline-4">
<h4 id="sec-8-2-21"><span class="section-number-4">8.2.21</span> <span class="target">hasPageCount</span></h4>
<div class="outline-text-4" id="text-8-2-21">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasPageCount">http://www.sdb.org/vocabulary/acssa#hasPageCount</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/spar/fabio/hasPageCount">http://purl.org/spar/fabio/hasPageCount</a>
</p>
<p>
<b>preferred label</b>: No. of pages (en)
</p>
<p>
<b>etichetta preferita</b>: Pagine (it)
</p>
<p>
<b>definition</b>: The count of the number of pages in a textual resource (en)
</p>
<p>
<b>definizione</b>: Il conteggio del numero di pagine in una risorsa testuale
</p>
<p>
<b>domain</b>: Document (excluding Digital Document)
</p>
<p>
<b>range</b>: xsd:positiveInteger
</p></div>
</div>
<div id="outline-container-8-2-22" class="outline-4">
<h4 id="sec-8-2-22"><span class="section-number-4">8.2.22</span> <span class="target">hasFormat</span></h4>
<div class="outline-text-4" id="text-8-2-22">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasFormat">http://www.sdb.org/vocabulary/acssa#hasFormat</a>
</p>
<p>
<b>preferred label</b>: Measurements in cm (en)
</p>
<p>
<b>etichetta preferita</b>: Misure cm (it)
</p>
<p>
<b>definition</b>: Restricted to a measurement (size of Book) (en)
</p>
<p>
<b>definizione</b>: Limitato ad una misura (di un Libro) (it)
</p>
<p>
<b>domain</b>: Book
</p>
<p>
<b>range</b>: Measurement in centimetres
</p>
</div>
</div>
<div id="outline-container-8-2-23" class="outline-4">
<h4 id="sec-8-2-23"><span class="section-number-4">8.2.23</span> <span class="target">hasPageRange</span></h4>
<div class="outline-text-4" id="text-8-2-23">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasPageRange">http://www.sdb.org/vocabulary/acssa#hasPageRange</a>
</p>
<p>
<b>preferred label</b>: Page range (en)
</p>
<p>
<b>etichetta preferita</b>: Pagine da… a… (it)
</p>
<p>
<b>definition</b>: Identifies the page range of an entity such as an article (en)
</p>
<p>
<b>definizione</b>: Identifica l'intervallo di pagine
</p>
<p>
<b>domain</b>: Book, Article, Academic Article
</p>
<p>
<b>range</b>: Values can be integers or Roman numerals (as in case of a preface)
</p></div>
</div>
<div id="outline-container-8-2-24" class="outline-4">
<h4 id="sec-8-2-24"><span class="section-number-4">8.2.24</span> <span class="target">hasJournalName</span></h4>
<div class="outline-text-4" id="text-8-2-24">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasJournalName">http://www.sdb.org/vocabulary/acssa#hasJournalName</a>
</p>
<p>
<b>preferred label</b>: Journal name (en)
</p>
<p>
<b>etichetta preferita</b>: Titolo della rivista (it)
</p>
<p>
<b>definition</b>: Title of Journal
</p>
<p>
<b>definizione</b>: Titolo della Rivista (it)
</p>
<p>
<b>domain</b>: Journal
</p>
<p>
<b>range</b>: xsd:string
</p></div>
</div>
<div id="outline-container-8-2-25" class="outline-4">
<h4 id="sec-8-2-25"><span class="section-number-4">8.2.25</span> <span class="target">isAboutCountry</span></h4>
<div class="outline-text-4" id="text-8-2-25">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#isAboutCountry">http://www.sdb.org/vocabulary/acssa#isAboutCountry</a>
</p>
<p>
<b>preferred label</b>: Country mainly about (en)
</p>
<p>
<b>etichetta preferita</b>: Nazione principale di cui si tratta (it)
</p>
<p>
<b>definition</b>: As indicated by the preferred label (en)
</p>
<p>
<b>definizione</b>: Secondo l'indicazione dell'etichetta preferita (it)
</p>
<p>
<b>domain</b>: Publication
</p>
<p>
<b>range</b>: Values should follow a recognized standard such as country names or codes as listed in the ISO 3166 Code: <a href="http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html">http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html</a>. The names may be internationalized
</p></div>
</div>
<div id="outline-container-8-2-26" class="outline-4">
<h4 id="sec-8-2-26"><span class="section-number-4">8.2.26</span> <span class="target">hasContentCategory</span></h4>
<div class="outline-text-4" id="text-8-2-26">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasContentCategory">http://www.sdb.org/vocabulary/acssa#hasContentCategory</a>
</p>
<p>
<b>preferred label</b>: Content category (en)
</p>
<p>
<b>etichetta preferita</b>: Categorie di contenuto (it)
</p>
<p>
<b>definition</b>: This is a list of possible topics within the Salesian ambit (en)
</p>
<p>
<b>definizione</b>: Un elenco di argomento o temi dentro dell'ambito salesiano (it)
</p>
<p>
<b>domain</b>: Document
</p>
<p>
<b>range</b>: Cf online or printed form (scheda) for currently listed topics.
</p></div>
</div>
<div id="outline-container-8-2-27" class="outline-4">
<h4 id="sec-8-2-27"><span class="section-number-4">8.2.27</span> <span class="target">hasDescription</span></h4>
<div class="outline-text-4" id="text-8-2-27">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasDescription">http://www.sdb.org/vocabulary/acssa#hasDescription</a>
</p>
<p>
<b>preferred label</b>: Description and evaluation (en)
</p>
<p>
<b>etichetta preferita</b>: Descrizione e valutazione del testo (it)
</p>
<p>
<b>definition</b>: A free text opportunity to describe or evaluate content of a document (en)
</p>
<p>
<b>definizione</b>: Un'occasione in 'testo libero' per descrivere o valutare i contenuti di un documento (it)
</p>
<p>
<b>domain</b>: Document, Article, Academic Article
</p>
<p>
<b>range</b>: xsd:string
</p></div>
</div>
<div id="outline-container-8-2-28" class="outline-4">
<h4 id="sec-8-2-28"><span class="section-number-4">8.2.28</span> <span class="target">compiledBy</span></h4>
<div class="outline-text-4" id="text-8-2-28">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#compiledBy">http://www.sdb.org/vocabulary/acssa#compiledBy</a>
</p>
<p>
<b>preferred label</b>: Compiler (en)
</p>
<p>
<b>etichetta preferita</b>: Compilatore (it)
</p>
<p>
<b>definition</b>: Name and Surname (together) of the person who compiles this biblographical record (en)
</p>
<p>
<b>definizione</b>: Nome e Cognome (insieme) della persona che compila questa scheda bibliografica (it)
</p>
<p>
<b>domain</b>: CompilationForm
</p>
<p>
<b>range</b>: xsd:string
</p></div>
</div>
<div id="outline-container-8-2-29" class="outline-4">
<h4 id="sec-8-2-29"><span class="section-number-4">8.2.29</span> <span class="target">hasURL</span></h4>
<div class="outline-text-4" id="text-8-2-29">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasURL">http://www.sdb.org/vocabulary/acssa#hasURL</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/spar/fabio/hasURL">http://purl.org/spar/fabio/hasURL</a>
</p>
<p>
<b>preferred label</b>: URL (en)
</p>
<p>
<b>etichetta preferita</b>: URL (it)
</p>
<p>
<b>definition</b>: An identifier, in form of a URL, for a particular resource (en)
</p>
<p>
<b>definizione</b>: Un identificatore, informa di URL, di una risorsa (it)
</p>
<p>
<b>domain</b>: Digital Document, Web Page, Web Site
</p>
<p>
<b>range</b>: xsd:anyURI
</p></div>
</div>
<div id="outline-container-8-2-30" class="outline-4">
<h4 id="sec-8-2-30"><span class="section-number-4">8.2.30</span> <span class="target">hasLanguageCode</span></h4>
<div class="outline-text-4" id="text-8-2-30">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasLanguageCode">http://www.sdb.org/vocabulary/acssa#hasLanguageCode</a>
</p>
<p>
<b>preferred label</b>: Language (en)
</p>
<p>
<b>etichetta preferita</b>: Lingua (it)
</p>
<p>
<b>definition</b>: The human (natural)language of a resource (en)
</p>
<p>
<b>definizione</b>: La lingua (umana, naturale) di una risorsa (it)
</p>
<p>
<b>domain</b>: Document or Digital Document
</p>
<p>
<b>range</b>: Recommended use of ISO 639-1 Code (2 letter code) for languges, e.g. en, it, es, pt, fr….zu
</p></div>
</div>
<div id="outline-container-8-2-31" class="outline-4">
<h4 id="sec-8-2-31"><span class="section-number-4">8.2.31</span> <span class="target">hasID</span></h4>
<div class="outline-text-4" id="text-8-2-31">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasID">http://www.sdb.org/vocabulary/acssa#hasID</a>
</p>
<p>
<b>preferred label</b>: ID (en)
</p>
<p>
<b>preferred label</b>: ID (it)
</p>
<p>
<b>definition</b>: A unique and unambiguous reference to the resource within a given context (en)
</p>
<p>
<b>definizione</b>: Un riferimento unico e univoco alla risorsa nell'ambito di un dato contesto
</p>
<p>
<b>domain</b>: Document or Digital Document
</p>
<p>
<b>range</b>: Recommended best practice is to identify the resource by means of a string conforming to a formal identification system
</p></div>
</div>
<div id="outline-container-8-2-32" class="outline-4">
<h4 id="sec-8-2-32"><span class="section-number-4">8.2.32</span> <span class="target">hasCreationDate</span></h4>
<div class="outline-text-4" id="text-8-2-32">
<p> <b>URI</b>: <a href="http://www.sdb.org/vocabulary/acssa#hasCreationDate">http://www.sdb.org/vocabulary/acssa#hasCreationDate</a>
</p>
<p>
<b>is defined by</b>: <a href="http://purl.org/dc/terms/created">http://purl.org/dc/terms/created</a>
</p>
<p>
<b>preferred label</b>: Date (en)
</p>
<p>
<b>etichetta preferita</b>: Data (it)
</p>
<p>
<b>definition</b>: Date of creation or compilation of the resource (en)
</p>
<p>
<b>definizione</b>: Data di creazione (compilazione) della risorsa
</p>
<p>
<b>domain</b>: Document, Digital Document
</p>
<p>
<b>range</b>: <a href="http://www.w3.org/2000/01/rdf-schema#Literal">http://www.w3.org/2000/01/rdf-schema#Literal</a>
</p></div>
</div>
</div>
</div>
</div>
<div id="postamble">
<p class="date">Date: 2012-02-14 21:12:14 CET</p>
<p class="creator">Org version 7.8.03 with Emacs version 23</p>
<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
</div>
</body></html>
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ad gentes (untranslated but means literally 'to the nations').
!!!''Definition:'' (if a precise one exists)
(1) //Ad Gentes// is the Second Vatican Council's Decree on the Missionary Activity of the Church. Passed by the bishops assembled by a vote of 2,394 to 5, it was promulgated by Pope Paul VI on November 18, 1965. The title means "to the nations" in Latin, and is from the first line of the decree, as is customary with Roman Catholic documents.
(2) In his last words to the apostles, the Lord Jesus Christ gave them a mission: “Go, therefore, and make disciples of all nations, baptizing them in the name of the Father, and of the Son, and of the Holy Spirit, teaching them to observe all that I have commanded you” (Mt 28:19-20). The 'go...all nations' is 'ad gentes' in Latin.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
One difficulty with taking //ad gentes// out of its original linguistic context, to develop it into an over-arching missionary approach, is that it can be interpreted ethnocentrically. It is "missionary activity proper", in the view of //Redemptoris Missio//, and is directed to peoples among whom the Church has not been firmly established and whose cultures have not yet been influenced by the Gospel, people who are found in certain geographical areas for the most part.
At the same time RM, in no. 37 opens up other vistas for //missio ad gentes//, vistas which today the Congregation further describes as 'new frontiers':
*the megacities of our world "where a new humanity, so to speak, is emerging, and where new models of development are taking shape" (RM no. 37);* the youth who cannot be evangelised by "the ordinary means of pastoral work" (ibid.);
*migrants and refugees;
*those living in situations of poverty;
*the new culture emerging in the mass media;
*and new areas of activity such as "commitment to peace, development and the liberation of peoples, the rights of individuals and peoples, especially those of minorities, the advancement of women and children, safeguarding the created world.
The missionary vocation //ad gentes// is regarded as a special vocation, not one given to every person. Jesus called some from amongst his disciples to accompany him and go with him to preach to the people (cf. RM no. 65)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[la]'' (Target Language, as above) <br>''Glossed as:'' [remains untranslated].
!!!''Definition:'' (if a precise one exists)
SOURCE UNKNOWN: A refrain with a semi-liturgical significance.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The more complete phrase is //ad multos annos vivat// and it is usually sung: //ad multos annos vivat, plurimosque annos vivat, vivat, vivat, vivat//.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Latin: 'for many years'. In fact its origin is Christian and goes back to a time when the newly consecrated bishop sang this three times to his consecrator; or in the case of an abbot at his investiture, once only.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[la]'' (Target Language, as above) <br>''Glossed as:'' [remains untranslated].
!!!''Definition:'' (if a precise one exists)
Used of an ecclesiastical office whose bearer may be removed from that office by his or her appointer at will, without need for further explanation.
TRECCANI: Nel linguaggio giur., formula che qualifica l’atto con cui un soggetto pone termine a un rapporto giuridico per sua libera determinazione, senza che l’altra parte possa opporsi: licenziamento //ad nutum//. È anche la formula con cui viene conferito un ufficio ecclesiastico il cui titolare può essere rimosso dal concedente senza una causa tassativamente stabilita.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Literally meaning 'at the will of', it is a term used in Canon Law to refer to a person appointed for the time that the Superior remains in office, or until he changes his mind.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ADMA.
!!!''Definition:'' (if a precise one exists)
Public Association of the Faithful. Don Bosco founded the group 'to foster veneration of the Blessed Sacrament and devotion to Mary Help of Christians'.
<br>
!!!''Synonyms:''
Clients of Mary Help of Christians (deprecated), Devotees of Mary Help of Christians (deprecated), Mary Help of Christians Association
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
//Association of the Devotees of Mary Help of Christians//, hence the 'D' in ADMA, is now deprecated in favour of the simple //Association of Mary Help of Christians//, or //Mary Help of Christians Association//.
The Rector Major, Fr Ángel Fernández Artime, has written a "Letter on the occasion of the 150th anniversary of the foundation of the Association of Mary Help of Christians (ADMA) – 18 April 1869", and in it he traces the history of the term (as well as the reality) of this association. With regard to 'devotee', he points out that 'This little word, antiquated and somewhat out of fashion nowadays, is the key to entering into the burning heart of the relationship that links Don Bosco with the Help of Christians.'
Don Bosco himself traced out the origins of the group in a leaflet entitled "Association of the Devotees of Mary Help of Christians canonically erected in the Church dedicated to Her in Turin with historical information about this title by the priest John Bosco". He attributed the origin of the Association to "repeated requests," coming "from all parts and from people of all ages and every condition" during and after the construction and the consecration of the church. He referred to the associates as "those united in the same spirit of prayer and piety paying homage to the great Mother of the Saviour invoked with the beautiful title of the Help of Christians".
To increase the expansion of the Association, Don Bosco managed to have it erected as an Archconfraternity, with the faculty of aggregating to it similar associations already in existence or later to be erected. This was granted by Pius IX with the Brief //Sodalitia Fidelium// of 5 April 1870, which, however, limited the aggregation to the archdiocese of Turin. With a subsequent Brief //Expositum Nobis// of 2 March 1877, the faculty was extended to all the dioceses of Piedmont. After the death of Don Bosco, Leo XIII, first with the Brief //Admotae Nobis preces// of 25 June 1889, granted the faculty of aggregation to all the similar associations "erected or to be erected in any church or public oratory belonging to the Salesian Society wherever they may be"; then with the Brief //Cum multa// of 19 January 1894, he conferred //in perpetuo// on the Rector Major of the Salesians and his successors the faculty of being able "to validly and lawfully erect other associations of the same name, and institute in any place where houses and churches of the Congregation existed and aggregate the associations erected to the above mentioned Archconfraternity”; two years afterwards with the Brief //Sodalitas// of 25 February 1896, he granted the Rector Major and his successors the faculty of "aggregating to the same Archconfraternity", established in the church of Mary Help of Christians in Turin, other associations with the same aims and of the same kind canonically erected in any church or diocese." Finally, the Sacred Congregation for Religious with the rescript of 31 July 1913 granted the privilege that the Rector Major might canonically erect the Association of the Devotees of Mary Help of Christians also in the houses of the Institute of the FMA and aggregate them to the Primary Centre in Turin.
(PIETRO BRAIDO, //Don Bosco prete dei giovani nel secolo delle libertà//, LAS, Roma 2003, Vol I pp. 526 - 528.)
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Don Bosco himself traced out the origins of the group in a leaflet entitled "Association of the Devotees of Mary Help of Christians canonically erected in the Church dedicated to Her in Turin with historical information about this title by the priest John Bosco". Cf. comment above.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ en]'' (Target Language, as above) <br>''Glossed as:'' adoration.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //[...] a una divinità o a una persona considerata divina: essere, stare, mettersi, prostarsi in adorazione. Nella religione cattolica, atto col quale si esprime l’omaggio a Dio.// ... ~ of a divinity or person thought to be divine ...
In the Catholic religion an act expressing homage to God.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Desramaut includes the term amongst his 100 key words of Salesian spirituality. Salesians begin their understanding of the term from Francis de Sales who sees adoration as a daily thing, in any circumstance. Adoration before the Bl. Sacrament is very much part of Salesian tradition, following Don Bosco, Fr Rua //et al//.
<br>
!!!''Usage notes''
Note that while //adorazione// may well mean 'adoration' in context, it often might be better glossed as 'worship'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[es]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ADS.
!!!''Definition:'' (if a precise one exists)
Association of Catholic lay women founded in 1948 in Caracas, Venezuela. A Private Association of the Faithful in ecclesiastical terms.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
This term is often left untranslated. Some in the English world refer to them as 'Salesian Women', especially in the US.
Has official membership of the Salesian Family. The Salesian assistant to the DAMAS is called the 'Spiritual Director'.
<br>
!!!''Usage notes''
Often referred to by the shorter title (capitalised) DAMAS, not an acronym but a shortened version.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
These are all the tiddlers that make possible this dictionary, if you want unique features such as a middle case, a second gloss language or to change the template for new words then you need to edit these:
!!Content and macros
<$list filter="[prefix[$:/0/]sort[title]]"/>
!!Plugins
<$list filter="[prefix[$:/plugins/skeeve]] [prefix[$:/help/skeeve]]"/>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' EAO. East Asia-Oceania
!!!''Definition:'' (if a precise one exists)
Current Salesian Region.
<br>
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Essentially the region is the old Australia-Asia region minus South Asia, but in 2008 at GC26, Myanmar (MYM) was added in from the South Asia Region.
!!!''Usage notes''
The full term, East Asia-Oceania may or may not be hyphenated.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
AEO/EAO and other Salesian regions are better known as initialisms rather than acronyms (in speech the letters are pronounced, rather than pronouncing them as a word).
!!!''Citation''
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' entrustment.
!!!''Definition:'' (if a precise one exists)
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Distinguish from 'consecration', especially, for example, when speaking of the prayer of (entrustment) to Mary Help of Christians.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
From Latin //affidamentum//. English 'entrustment' exists but is rare.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[consecration|consecrazione]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' time passes slowly for those who are sad and fast for those who are cheerful.
!!!''Definition:'' (if a precise one exists)
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
John Bosco saw this inscription on the sundial at the seminary in Chieri when he first entered there, and determined to make his time pass quickly! (The sundial in question is no longer on the wall of the courtyard, though a second one is still visible on the adjacent wall)
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Sundials have always been famous for their Latin inscriptions. Here are a few more:
A SOLIS ORTU USQUE AD OCCASUM (from the rising of the sun to its setting).
AETAS CITO PEDE PRAETERIT (Life goes by at a swift pace [Lit.: with swift foot].
BREVIS AETAS, VITA FUGAX (Time is short, life is fleeting).
CARPE DIEM, HORA ADEST VESPERTINA (Harvest the present moment, evening is almopst here).
!!!''Citation''
MO: Alzando lo sguardo sopra una meridiana lessi questo verso: Afflictis lentae, celeres gaudentibus horae.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' AFM Africa-Madagascar.
!!!''Definition:'' (if a precise one exists)
Current Salesian region
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' comfort, ease.
!!!''Definition:'' (if a precise one exists)
SOURCE UNKNOWN: Social and financial circumstances corresponding to well-being
<br>
!!!''Synonyms:''
life of ease, well-being, //imborghesimento// [it]
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Italian term //agiatezza// or occasionally //imborghesimento// (Don Bosco used the former, not the latter) refers to an easy life, something he wanted his Salesians to avoid at all costs.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
DBSpiritual Testament: "la vera agiatezza che nessuno invidierà e niuno verrà a rapirci..."
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[work and temperance|lavoro e temperanza]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Albera, Paul.
!!!''Definition:'' (if a precise one exists)
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Paul Albera was the second successor of Don Bosco, a fact predicted by the Saint of Valdocco himself. Elected Rector Major at the death of Fr Michael Rua (1910) he dedicated himself particularly to the spiritual formation of the members of the Salesian Society, spelling out directives for interior life. This care was also mirrored in the social field in his wish that educational work be pursued beyond the schools and colleges by more stringent and consequent bonds. He brought together Congresses of Past Pupils and Cooperators with precise aims: to forge fraternal bonds which would augment the fruits of the education received and which would facilitate mutual assistance; to diffuse the Christian spirit throughout family, society and especially amongst young people; to promote and put in place, eventually, private and public initiatives aimed at supporting the many works of assistance, religious and social outlook that have come into existence in the name of Don Bosco. He carried this through most effectively amidst the difficulties of the first World War when it was necessary to organize huge works of charity and assistance in different nations at war.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' cheerfulness.
!!!''Definition:'' (if a precise one exists)
SOURCE UNKNOWN: A lively, happy state of mind understood as a Christian virtue.
!!!''Synonyms:''
happiness
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Part of the trio //allegria, studio-lavoro, pietà// (cheerfulness, work-study, piety) frequently employed by Don Bosco with the sense of being a virtue, hence his including it in recommendations to Dominic Savio who asked what he had to do to become a saint. DB would also often remind a youngster to //sta allegro//, be happy. He had other similar trios, like //salute, sapienza, santità//
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
CG20: "Allegria era il clima in cui il Santo giovanetto cresceva coi coetanei nella fede vissuta, e sua delizia".
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
<$list filter="[tag[Alphabetical order]sort[title]]"/>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' setting.
!!!''Definition:'' (if a precise one exists)
SOURCE UNKNOWN: The complex of social, cultural and moral circumstances in which a person lives; the social 'climate' or atmosphere.
<br>
!!!''Synonyms:''
neighbourhood, environment, circle, climate, atmosphere ...
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
We are likely to find the Italian term //ambiente//, which we can often, though not always translate with 'setting', in frequent use in Salesian discourse today. It will often be in combination with an adjective such as //popolare//, in which case the phrase might be rendered as 'ordinary folk', or 'ordinary poor people', according to circumstance, another way of saying //ceti popolari//, which we find in the Italian version of the Constitutions.
But it is worth noting the huge change that took place in the SDB renewed Constitutions (1984). While previously the term //ambiente// (setting or environment, but this time the English text translates it as 'neighbourhood') wasn't found anywhere, the new text repeats it often, with a variety of glosses in English: C 41: //We give practical expression to the redeeming love of Christ by organising activities and works of an educational and pastoral nature designed to meet the needs of the ''neighbourhood'' and of the Church//. C. 57: //The Salesian community is... open to the ''cultural milieu'' in which it carries out its apostolic work.// C.77: //every community is sensitive to the conditions of its ''neighbourhood''.// R.11: //The Oratory... should be organised as a service to the ''neighbourhood''.// R. 14: //A Salesian school....services to meet'' local needs''.// R 17: //The aspirantate... keeps itself open to the ''neighbourhood''.// R. 60: //Our works should be open and available for the needs of the'' neighbourhood''...// R. 89: //The house of the novitiate should be in contact with social and apostolic realities of the ''neighbourhood''.//
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Chavez ACG379: in Cristo l'amico comune e l'unico Salvatore, i giovani degli ambienti salesiani
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' sector.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
area, dimension
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
This term is used by the Salesian Sisters in a particular way, to indicate what the SDBs call a //settore// or sector. The Sisters refer to these areas of the Salesian mission as an //ambito//, e.g. Youth Ministry,('Pastorale Giovanile'), Social Communication, etc.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[settore]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' friends of Don Bosco.
!!!''Definition:'' (if a precise one exists)
Unofficial grouping to cover those who sympathise with and act closely according to Salesian principles (and in collaboration with Salesians) but who are not members of an official Salesian family group.
<br>
!!!''Synonyms:''
Salesian sympahtisers
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term is particularly useful in non-Christian contexts, though not only.
It is arguable, at least in English, if the term is to be capitalised or not as Friends of Don Bosco. Doing so immediately implies a degree of membership qualification that does not, in fact, exist (at least not yet).
<br>
!!!''Usage notes''
!!!''Citation''
CG24: Si riconosce che gli amici di don Bosco si inseriscono in un movimento.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' friendship.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Vivo e scambievole affetto fra due o più persone, ispirato in genere da affinità di sentimenti e da reciproca stima. Nella filosofia greca il termine amicizia (ϕιλία) si incontra dapprima come concetto fisico in Empedocle con il significato di forza...// Keen and mutual affection between two or more people ...
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term is one of the 100 words of Salesian spirituality selected by Desramaut. Salesian understanding of friendship is normally quite positive, drawing from Francis de Sales but also DB's friendship experiences (e.g. Jonah, his Jewish friend, Comollo, in MO). DB was not afraid to speak of friendship between Salesians and their pupils. It is also true to say that there was a long period of negative associations of friendship in Salesian tradition from Fr Rua until Fr Viganò, when once again the term receives a positive approach.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
MO: Attesa l'amicizia, la confidenza illimitata che passava tra me e il Comollo, eravamo soliti parlare di quanto.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Friendly Societies.
!!!''Definition:'' (if a precise one exists)
Secret societies generally dedicated to the defence of the Catholic faith and the institutional Church, at first chiefly through the spreading of good books.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Founded by Jesuits, at least two groups, the //Amicizia cattolica// and the //Amicizia sacerdotale//, were less secret in Don Bosco's time. The pastoral and doctrinal concerns of the latter group were to be found expressed through the activities of the Congregation of the Oblates of the Virgin Mary in their work of renewal of moral theology in Piedmont and the founding of the Pastoral Institute in Turin, hence Don Bosco's good understanding of their interests.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' administration of temporal goods.
!!!''Definition:'' (if a precise one exists)
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Term which deals with the structural aspect within Salesian communities, cf. C. 108 and the corresponding regulations. The Salesian Society has the ability to acquire, possess, administer and alienate temporal goods (Congregation, province, house level). Temporal goods are regarded as means through which to achieve the apostolic aims of the Congregation.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[povertà]] [[economia]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' loving-kindness.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //1. L’essere amorevole: l’amorevolezza dei genitori verso i figli; affettuosa benevolenza: tratta tutti con amorevolezza. 2. In senso concr., non com., atto affettuoso, dimostrazione di affetto, di benevolenza:...// Being loving: love of parents for children; affectionately benevolent ... an affectionate act, demonsration of affection, benevolence.
<br>
!!!''Synonyms:''
loving concern, affection, kindness, patience
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In the Italian lexicon familiar to Don Bosco, the term //amorevolezza// was not identified so much with 'love' or the theological virtue of charity, but rather with a range of little relational virtues, attitudes or behaviours shown by gestures, help, gifts, availability. It is the kind of affection shown by a parent or by husband and wife. It is this common-garden sense of the term that Don Bosco employed, but then added an understanding that moved towards a more deeply Christian understanding of the term.
As P. Stella indicates, in //Don Bosco e le trasformazioni sociali e religiose del suo tempo// (Elledici 1973), the term is a complex code of symbols, signs, behaviours for Don Bosco. But it turns up in most of his major areas whereby the preventive system is realised: encounter, forgiveness, confession, the educational relationship, the 'system', teaching practice, ministry, and living together as a family.
<br>
!!!''Usage notes''
In English we may choose to leave the term as two words, hyphenate it, or combine it into a single word, depending on the degree of familiarity with its use. For Salesians, the single term is fine; for 'friends of Don Bosco' it may be better to maintain it as two words or at most hyphenated.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
In English, at least, hyphenated words eventually become a single word: e-mail rather quickly became e-mail (whereas Italian retains the hyphen in this word). So for loving-kindness, we could expect it to become lovingkindness if it comes into familiar use (which it is unlikely to in the broader population).
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[religion|religione]], [[reason|ragione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' register.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Registro della popolazione destinato, in ogni Comune, a documentare lo stato numerico della popolazione stabile e fluttuante e i mutamenti che in essa si verificano per cause naturali e civili (nascita, matrimonio, morte, emigrazione, professione ecc.)....// Registry of population in a municipality ...
More specifically in the Salesian case, a Census Register from 1847-69 which recorded the names of boarders accepted at Valdocco each year.
<br>
!!!''Synonyms:''
These days it could well be called a database.
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
There was an older list called the 'Repertorio domestico' (House list), a somewhat rough handwritten list of names from 1847-53.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[repertorio domestico]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' leader.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //[chi anima, dà vita, impulso, movimento a qualcosa] ≈ organizzatore, promotore, sostenitore, fomentatore, istigatore, provocatore, sobillatore.// Someone who gives life, impetus, movement to something.
<br>
!!!''Synonyms:''
animator
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In Salesian usage 'animation' is a characteristic style of leadership.
Codified in Salesian texts since Vatican II, animation is a quality, a service, a style, something which is a capacity of individual Salesians (//capacità dell'animazione//), of leadership, something to be exercised in the community, e.g. the// animazione della comunità// (animation of the community), or the //animazione del CEP// (animation of the Educative and Pastoral Community). We speak of something also more structured as in the //servizio di animazione// (service of animation) or even //organismi di animazione// (animation structures, animation bodies such as commissions).
!!!''Usage notes''
Depending on context it would generally be better to gloss the term as 'leader', 'group leader', 'organiser' or a range of other possible synonyms.
The term //animazione vocazionale// is best glossed as 'vocation ministry'. And //animazione pastorale// is possibly best glossed as 'pastoral leadership'.
It may need to be kept in some instances, e.g. //animatore spirituale// or 'Spiritual Animator', normally capitalised in English, a term used of the Salesian in a community responsible for [[ADMA]].
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
In English, at least, the general public understands 'animator', 'animation' as more to do with films, especially today when animated versions of classics are popular. Hence the tag 'False Friend'.
!!!''Citation''
RATIO Ch 08: "... domestici, accetta tutti incondizionatamente e dà il suo contributo per l'animazione"
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' annals.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Narrazione storica di avvenimenti politici o comunque importanti, divisa per anni.// Historical narration of political or otherwise important events, arranged by years.
"We call this book 'Annals' because we intend to proceed in a chronological order, beginning from the year 1841 - Don Bosco categorically stated that the Congregation had its beginning in 1841". (Introduction to Ceria's first volume).
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Salesians immediately think of the full title //Gli Annali della Società Salesiana//. These "Annals of the Salesian Society" is a set of 4 hefty volumes with a total of 2887 pages.
<br>
!!!''Usage notes''
When referring to the Annals as described above, capitalise.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' yearbook.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Pubblicazione periodica, di solito – ma non sempre – annuale, che dà un complesso analitico di notizie e di dati statistici sui fatti svoltisi nell’annata rispetto...// A regular publication usually yearly but not always, with news, statistics ...
<br>
!!!''Synonyms:''
//elenco//, directory, annual
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The yearly general listing of Salesians and Houses in the Congregation.
In fact, //annuari// existed in the Salesian Society from 1870, and contained an //elenco generale//. At some stage this became simply the //Elenco//. It was known as this until 2002, then subsequently as //Annuario//.
<br>
!!!''Usage notes''
Despite the official change to //Annuario//, many Salesians still commonly refer to the //Elenco//.
!!!''Linguistic notes'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[elenco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ANS.
!!!''Definition:'' (if a precise one exists)
SSCS 17-10: produces Salesian information to feed Salesian media and disseminates its products amongst media, in the service of the Salesian mission.
<br>
!!!''Synonyms:''
Salesian information agency
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The acronym ANS now stands for //Agenzia iNfo Salesiana// (Salesian Information Agency) - it comes from the earlier, //Agenzia Notizie Salesiane// but was retained for sake of continuity with a slightly altered reference. In English, however, we still tend to speak of the Salesian News Agency, since 'Information Agency' is not common parlance in English.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
It is an unusual phenomenon that an acronym retains its initials but the meaning changes, yet, as noted above, this is precisely what has happened with ANS.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[social communication|comunicazione sociale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' apostolate.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //L’opera di chi dedica tutto sé stesso a diffondere verità religiose, e anche dottrine morali, sociali, politiche. Secondo la dottrina della Chiesa cattolica, il dovere dell’a. compete a ogni battezzato, il quale ha il diritto di promuovere proprie iniziative//. The work of someone who dedicates themselves to spreading religious truths, moral, social, political teachings. According to Catholic Church teaching, every baptised member has apostolate as a duty...
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
At one point the term 'apostolate' appeared to be a likely gloss for //pastorale// as in //pastorale giovanile// glossed as 'Youth Apostolate', but they are not the same. Hence 'Youth Pastoral Ministry' came into being as a gloss for the specific nature of Salesian ministry for the young.
While this term is still found (and often shortened, unfortunately, to 'Youth Pastoral' as a noun, which is less acceptable in English), it is also often shortened to 'Youth Ministry'.
'Apostolate' has a wider meaning, since 'apostolic' means to work for the growth of the Church. We also speak of our //impegno apostolico// (apostolic commitment), something which arises from and is inspired by pastoral charity. Desramaut includes 'apostolate' among his 100 key words of Salesian spirituality, but devotes most of his discussion to its newer significance in terms of new evangelization.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
RATIO Ch 6: ..buona esperienza vissuta di vita cristiana e di apostolato
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[pastorale giovanile]].//
!!!!''SL'' is ''[es]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Arancel system.
!!!''Definition:'' (if a precise one exists)
“Arancel” is a Spanish word for the rate of taxes, fees, or tariffs to be paid, like a system or court costs or customs fees.
!!!''Synonyms:''
stole fees
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term does not appear in Canon Law or the Catechism, or in any major magisterial document of the Holy See.
In some Spanish-speaking countries, then, the ‘arancel system’ in the Church refers to an outdated practice of paying priests or other ministers for specific sacraments or services, in place of the minister receiving a stipend or salary from the diocese. Sometimes this is known as the practice of “stole fees” - and is dangerously close to simony, and often is, in fact, exactly that.
It is also prejudicial against the poor, who might not be able to afford something which is supposed to be free. For this reason, the practice is nonexistent in many parts of the church and being phased out where it still can be found, like parts of the Philippines.
The better practice is for all donations to go directly to the diocese or parish, and for the priest, deacon, or lay ecclesial minister to draw a salary or stipend plus expenses from the parish or diocese.
Apparently, the pope is thinking along the same lines: “Churches cannot be like some kind of supermarket, places of commerce perhaps with a price list for the sacraments” (Pope Francis).
!!!''Usage notes''
ALERT! This term is found only in the Philippines when it is in reference to tithing or donations for ecclesiastical services
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' working boys.
!!!''Definition:'' (if a precise one exists)
TRECCANI: 1. //Chi esercita un’attività (anche artistica) per la produzione (o anche riparazione) di beni, tramite il lavoro manuale proprio e di un numero limitato di lavoranti, senza lavorazione in serie, svolta generalm. in una bottega.// Someone who carries out an activity (including of an artistic nature) for production (or restoration) of goods through manual work ... in a workshop ...
2. //Dim., disus., artigianèllo, che è stato usato per indicare sia un giovane o umile artigiano, sia, al plur., i giovani che, in appositi istituti assistenziali, venivano avviati alle attività artigiane//. now fallen out of use; to indicate either a young worker or lowly craftsman or, in the plural, young people in welfare institutions who were set on the road to craft-type activities.
It is in this latter sense that the //artigiani// of Don Bosco is to be understood. He was also closely associated with //Collegio degli Artigianelli// (Home for Young Apprentices), a work promoted by Fr Cocchi who formed a society of priests and “young laymen” to work for the education of “so many youngsters, mostly orphaned and abandoned, that roam the city ..., and to start them on a profession or trade.” This was the Charitable Society [to care] for Orphaned and Abandoned Young People. It was established on March 11, 1850.
!!!''Synonyms:''
artisans, apprentices
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Boys learning a trade in one of the workshops at the Oratory
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
DBBesucco: Gli artigiani devono aver compiuto i 12 anni e non oltrepassare i 18; essere orfani di padre e di madre; ...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Oratory|oratorio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SA. South Asia
!!!''Definition:'' (if a precise one exists)
Current Salesian Region consisting of the Indian Subcontinent (not including Pakistan) with Sri Lanka.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ASC. Salesian Central Archives
Note the need to disambiguate this acronym from ASC [[//Associazione Salesiani Cooperatori//]]
!!!''Definition:'' (if a precise one exists)
A central depository which has the function of preservation of the documentary heritage of the Congregation
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The //Elementi Giuridici// provide a number of articles describing the importance of conserving the heritage of the Congregation by way of archives, at local (House) or Province level or Central World level. At the level of central administration there are the Salesian Central Archives. This follows the requirements of Canon Law. Official archives are the subject of various regulations and it is recommended that the Congregation and the Provinces have their own regulations as to the who, when, how of the archives.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ISS|ISS Istituto Storico Salesiano]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' asceticism.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Azione interiore rivolta all’acquisto della perfezione e ascensione verso Dio mediante l’abnegazione, l’esercizio continuo delle virtù, la preghiera (specie come orazione mentale e meditazione) e il graduale distacco dal mondo//. Interior action aimed at acquiring perfection and ascending to God through self-denial, constant practice of virtue, prayer (especially as mental prayer or meditation).
<br>
!!!''Synonyms:''
self-discipline
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The English gloss has an unfamiliar ring about it - part of the problem of contemporary spirituality, undoubtedly! Part of the problem of the English words 'ascetic', 'asceticism', is that they conjure up images of Mahatma Gandhi or the like (or certain holy pictures of Don Rua?). It would be worth reading what Desramaut has to say about this term in Salesian and Christian spirituality - he counts it among his 100 important terms.
Asceticism implies a degree of spiritual combat. In Salesian terms, we find it expressed through the reverse side of the picture in Don Bosco's Dream of the Ten Diamonds, as explained later particularly by Fr Rinaldi (ASC 55 1930) and Fr Viganò (ASC 300 1981).
<br>
!!!''Usage notes''
The most frequent problem in linguistic terms is the occasional habit of transliterating the Italian to produce 'ascesis', the Greek term. This is quite unfamiliar in English! Therefore, 'asceticism' is the preferred gloss.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
There is no true life in the spirit without a real asceticism (Viganò, ACG 342)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' novice.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Inserito in un gruppo, accolto fra i membri di un’associazione//. Part of a group, accepted as a member of an association.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco's first descriptions of the Salesian Society did not envisage a traditional novitiate, so he did not speak of //novizi// but rather of //ascritti//.
<br>
!!!''Usage notes''
Even in Italian today this is not a common use of the word, so it is tagged above as having 'Salesian' status.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Dbmem: Gli aspiranti provati e conosciuti come sopra si possono con facilità ricevere fra gli ascritti.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ASF. Apostles of the Holy Family
!!!''Definition:'' (if a precise one exists)
FROM ASF WEBSITE://Noi Apostole della Sacra Famiglia ci qualifichiamo, quindi, come persone chiamate da Dio a praticare i consigli evangelici e ad operare nella Sua Chiesa, con la consacrazione totale del nostro essere, per promuovere l'integrita' e la santita' della famiglia mediante la pastorale famigliare e l'educazione della gioventu'.// We, the Apostles of the Holy Family, therefore describe ourselves as people called by God to practise the evangelical counsels and to work within his Church, with the total consecration of our being, to foster the integriyt and holiness of the family through family ministry and the education of the young.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Member group of the Salesian Family. Founded in 1889 in Messina by Cardinal Guarino (1827-1897), Archbishop of Messina adn subsequently Cardinal. He wanted the group to support his particular pastoral commitment to prtecting the sacred nature of the family.He called the group after the family of Nazareth, the model image of perfection for every Christian family, and placed families under the protection of the Holy Family.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ASMOAF Australian Salesian Mission Oversaid Aid Fund.
!!!''Definition:'' (if a precise one exists)
https://salesians.org.au/salesian-works/missions-office ASMOAF’s mission is to support the vocational teaching of underprivileged young people in developing countries, in order that they find employment and become self-sufficient, contributing members of their nation.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Australian Salesian Missions Office has been part of the Provincial Economer’s domain since the 1960’s. It was granted tax deductible status for donations for the relief of poverty in developing countries in 1986. The Australian Salesian Mission Overseas Aid Fund (ASMOAF) was set up as a Trust in 2000.
Australian Salesian Mission Overseas Aid Fund (ASMOAF) is an agency for overseas aid and development. We are a member of the Australian Council for International Development (ACFID) a
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' aspirantate.
!!!''Definition:'' (if a precise one exists)
In a joint document released in 2011 by the Councillor for formation and the Councillor for Youth Ministry (on the experience of the aspirantate), the term 'aspirant' has now a preferred target group, viz., young men interested in Salesian consecrated life who have already completed some post-secondary studies. This does not rule out other candidates but is rather a statement of preference.
<br>
!!!''Synonyms:''
juniorate
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term does not appear in the Constitutions (but in the Regulations instead) or the Ratio.
DB in his own time made reference to 'Apostolic Schools' (Meeting of Superior Chapter, June 5, 1884), a model which he had heard of in France and which was a kind of junior seminary to prepare very young candidates for novitiate or seminary entrance.
The fact that the term does not appear in the Ratio might suggest it is on the way out. In actual fact, especially in regions where vocations are plentiful, the aspirantate has made a comeback! The term 'aspirant' should not be confused with 'seminarian', A seminarian could be an aspirant but an aspirant may not be a seminarian.
!!!''Usage notes''
The term aspirantate will normally be understood in religious circles (meaning Religious Congregations) but is rare outside that. It is obviously a derivation from 'aspirant'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ecclesiastical assistant.
!!!''Definition:'' (if a precise one exists)
A canonical term for the Salesian priest who is officially responsible for the VDB or the CDB.
<br>
!!!''Synonyms:''
central assistant
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The ecclesiastical assistant may also be called the central assistant.
<br>
!!!''Usage notes''
The term is more likely to be capitalised in English. It is tagged as 'general' because it is in wider use in the Church.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[CDB|CDB Volontari Con Don Bosco]], [[VDB|VDB Volontarie di Don Bosco]]..//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' assistance.
!!!''Definition:'' (if a precise one exists)
A style of presence to young people which meets all their real needs; a form of total human development. Total charitable activity on behalf of young people. (Cf. LentiDBHS-3 p. 158).
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Codified in Salesian terminology since DB. Key element of presence as part of Preventive System of DB.
The term is really the forerunner of 'preventive system', a term Don Bosco did not use as such before 1877, when he needed to give a theoretical basis to his activity. So its true content is extensive in the light of that. 'Assistance', from the Latin 'ad-sistere', implies 'being there' physically, therefore a presence, but not any kind of presence. It is an active presence, part of the Salesian style also known as 'animation'. The classic expression of Don Bosco "Here in your midst I feel completely at home" expresses well the concept of Salesian presence-assistance.
One of Don Bosco's characteristic traits which contributed to his spirituality was that he was always among the youngsters, to such an extent as to transform assistance into an educational system and a spiritual experience. “Familiarity with the young especially in recreation… The teacher who is seen only in the classroom is a teacher and nothing more, but if he joins in the pupils' recreation he becomes their brother”. He himself deplored and criticised certain tendencies which impaired this kind of presence: you cannot share the life of the youngsters if you are concerned about your own affairs, if you live apart from them, or if you assist without any real attention to individuals but just to fulfill a duty; or if you fail to show a love and real interest for each youngster.
!!!''Usage notes''
It might also be known as a combined word: presence-assistance.
From the concept of assistance we have the Italian (//assistente//) and English 'assistant'. 'Assistance' and therefore 'assistant' have very specific Salesian meaning as described above, so are not to be confused with the more common meaning of 'assistance' or 'assistant'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
We have defined and specified this aspect with the expression: “The Salesian community today: its fraternal life, its evangelical witness, its animating presence among the young”. (GC25)
Dbartgen: 2. Nell'assistenza poche parole e molti fatti, e dare agio agli allievi di esprimere i loro pensieri.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[sistema preventivo]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' associates.
!!!''Definition:'' (if a precise one exists)
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A term used by DB as a first reference to what finally became //cooperatori//, Cooperators. //Associati// is to be seen in conjunction with //congregati// (SDBs)
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
DBCircolari..e nuovi associati, si sforzino di accrescere i meriti delle loro opere buone.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[congregati]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' group-mindedness.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Il fenomeno dell’aggregarsi dei singoli in associazione e, estens., l’insieme delle associazioni attive in un dato campo//. The phenomenon whereby individuals gather in gorups/associations and, by extension, the set of active associations in a particular field.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A very difficult and abstract idea for translation into English! Meeting in groups is the basic idea.
!!!''Usage notes''
In Salesian usage, it refers to a typical aspect of Don Bosco's Preventive system, encouraging young people to join groupd which promote their own activity and leadership (//protagonismo//), as represented historically by the sodalities, bands, sports etc.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
//associazionismo// is a classic case of nominalisation, which Romance languagges are fond of, i.e. a preference for noun forms over verbs, and often quite abstract noun forms at that.
!!!''Citation''
~PGmanCapitolo 1: ..diverse forme dell'associazionismo, del volontariato e della cooperazione
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[sodality|compagnia]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' actuary.
!!!''Definition:'' (if a precise one exists)
One of the roles of the provincial secretary cf. //Elementi Giuridici// 3.2.1.
<br>
!!!''Synonyms:''
registrar, clerk, notary
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term has been tagged as a specifically Salesian usage (TS02), because neither of the common meanings (in Italian, in reference to an officer in the Roman Imperial army who looked after provisions etc.; or in English, a statistician who computes risks, rates, etc. especially for insurance purposes, according to probabilities derived from population statistics, etc.) are what an actuary does in a Salesian context. He is closer to the now obsolete meaning of a registrar or clerk.
!!!''Usage notes''
It is probably better to use the gloss 'notary', in English, which is more easily understood and is also a role of the Provincial Secretary.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[notary|notaio]].//
!!!!''SL'' is ''[ en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' austraLasia.
!!!''Definition:'' (if a precise one exists)
An e-newsletter founded in response to the need to link Salesian provinces in the then Asia-Australia (now the East Asia-Oceania) region in November 1997.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
austraLasia has developed into a substantial digital/online service under the umbrella of a website known as ~BoscoLink https://www.bosco.link
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The term requires a capital 'L': it could be understood as austra (Link) asia. Hence it is a portmanteau term, a single morpheme combining two or more morphemes.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[social communication|comunicazione sociale]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' (Mary/Our Lady) Help of Christians.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Latin is often glossed as //Ausiliatrice// or //Maria SS. Ausiliatrice// in Don Bosco's Italian.
Don Bosco's personal devotion to Mary transcended all titles, both the traditional historical titles and titles tied to local popular shrines. It was solidly founded on the Church's traditional Mariology (Mother of God/Christ, Theotokos) and on traditional popular devotion as simply 'Our Lady' (the //Madonna//). His devotion to Mary under particular titles, including Immaculate Conception and Help of Christians, appears as an aspect of his perception of Mary's basic presence in the Church.
However, his devotion to and use of the term 'Help of Christians' came later - after 1860. Neither in his //History of the Church// (1st ed. 1845) nor in his //History of Italy// (1st ed. 1866/6) is there any mention of the Help of Christians. The inscription on the frieze inside the great church he saw in his dream in 1844 read "Hic domus mea, inde gloria mea", not "Auxilium Christianorum". Nor is the title in the early editions of the //Companion of Youth// (1st ed. 1847).
It would seem that it was the apparition and miraculous events of Spoleto 1862 that precipitated his interest and use of the term. Archbishop Arnaldi of Spoleto officially bestowed the title //Auxilium Christianorum// on the apparition. Don Bosco's narration of his dream of the Two Columns (May 30 1862) seems clearly connected with the event - one of the columns bears the inscription 'Help of Christians'. This, along with Spoleto, was tied to political, revolutionary and anticlerical events in Italy. In 1868 Don Bosco indicated that there was "a very special reason why the Church in recent times wished to invoke Mary as Help of Christians".
!!!''Usage notes''
Given the specific reference to 'Christians', and given also the familiar reference to the briefer //Ausiliatrice// in other European languages, many Salesians in countries where Christianity is in a minoroty, or where there might be other particular difficulties, refer to 'Mary our Help' or something similar.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The English 'Help of Christians' does not translate the Italian //Ausiliatrice// but the Latin form - or would it be better to say that the Italian //Ausiliatrice// does not translate the Latin //Auxilium Christianorum//?
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Catholic Action.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Organizzazione del laicato cattolico per una speciale e diretta collaborazione con l’apostolato gerarchico della Chiesa.// Organisation of Catholic laity for special and direct collaboration with the apostolate of the Church's hierarchy. It has precedents in various Catholic associations that arose in the 19th century in various countries.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The movement was strengthened at the international congrees at Malines (1863) then consolidated under Leo XIII and his successors, especially Pius XI (Encyclical //Ubi arcano Dei//, 1922). Now extended throughout the world, More centralised in Latin nations and decentralised in English-speaking countries.
!!!''Usage notes''
The term comes in well after Don Bosco but as E. Ceria notes, what else were the Cooperators if not 'lay people, canonically associated (with the Salesians) to spread, and keep alive, dependent on ecclesiastical authority, Christian life in family and society?' The beatification of Andrew Marvelli by JP II in 2004, August, adds to this notion that of the Past Pupil. The beatifications on that day were all of members of Catholic Action from 1924 onwards.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
CG20-1: "...nei centri giovanili, nei pensionati, nei convitti, nei movimenti apostolici (JOC, Azione Cattolica, ecc.)".
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Cooperators|Cooperatore Salesiano/Salesiano Cooperatore]], [[Past Pupils|Exallievi (di Don Bosco)]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' barrarotta.
!!!''Definition:'' (if a precise one exists)
A game played in Italy in DB's day and long thereafter in Salesian traditon. Similar to a game in English called 'releaso' or even to 'red rover', inasmuch as two teams face each other at some distance. Barrarotta needs a referee, because someone has to determine who left their baseline first, since that person can always be 'tigged' and captured by anyone from the other team who leaves after them.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Remains untranslated.
'From one side they looked to the glory of beating Don Bosco; from the other they rejoiced because they were sure of victory!' all in reference to DB playing barrarotta with them in the courtyard. Interesting to note that Don Bosco had once vowed (when he took on the clerical habit) to give up playing barrarotta, among other pursuits. From a comment in MB III, 216-7 it is obvious he did not hold to that once at The Oratory!
!!!OTHER GAMES IN DON BOSCO'S ERA
Since the playground and games in general are so important in Don Bosco's approach, here is a list of the games often mentioned in his literature or literature relating to his period. Some are no longer commonly known or have been forgotten.
* ''bocce'': from //boccia//, a ball made of wood, or synthetic material (or even, in some places, metal) for a game of bowls: a popular game that takes place in individual or team matches on a special rectangular outdoor court; each of the players tries to get as close as possible to the smaller ball (the snitch or //boccino//) which is paunched into position at the start.
* ''piastrelle'': little wooden or metallic tiles thrown some distance away in a game that is not all htat different to bocce. individual players, throwing their tiles (stone, and now more often rubber or plastic), generally distinguished by colour from those of others, try to bring them as close as possible to a smaller tile thrown by the first player.
* ''altalena'': Seesaw.
* ''stampelle'': Stilts
* ''giostra'': Popular game consisting of trying to hit a target by running under it; some other types of competitions are also called //giostra//.
* ''passo del gigante'': a game played with a tall pole with a metal ring at the top and from 4-6 iron chains hanging from it with large rings on the bottom. The kids would put one leg on a ring and make large jumps around the pole with it.
* ''bersaglio a pesce'': darts.
* ''la corda'': skipping rope but maybe also tug-o-war.
* ''occa'': Piedmontese term for //gioco dell'oca// or 'goose game', an ancient board game that takes place between several people with two dice and a board where 63 to 90 numbered squares are drawn in a spiral; the total of the two rolled dice indicates the number of boxes a player covers each round; certain boxes (with the picture of a goose) entail certain advantages, others mean stop or go back; the player who gets to the final square wins.
* ''dama'': draughts.
* ''scacchi'': chess.
* ''tombola'': bingo.
* ''mestieri'': a miming game - guess the trade or occupation someone is miming.
* ''mercato'': we have no idea what this game consisted of. All trace of it has been lost.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Can also be spelt as two words: barra rotta
!!!''Citation''
DBmagone: ..destrezza corporale formava la sua delizia. Il giuoco che noi diciamo barrarotta era a lui..
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[playground|cortile]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' basilica.
!!!''Definition:'' (if a precise one exists)
MACQUARIE: 1. (in Roman times) a large rectangular building, typically with an aisle on either side of its long nave, and often with an apse at one or both ends; used as a meeting place and for the dispensing of justice.
2. an early or medieval Christian church with a ground plan similar to or derived from that of the Roman basilica.
Assigned by formal concession or immemorial custom to certain more important churches in virtue of which they enjoy privileges of an honorific character (not always clearly defined). There are 'Greater' or 'Lesser' basilicas
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The best known basilica in the Salesian world - and the first - was the Basilica of Mary Help of Christians in Turin. Another is 'Sacro Cuore' (Sacred Heart) in Rome. In recent years St John Bosco's at Cine Città and the Church of St John Bosco at Colle Don Bosco have been assigned the honour of being 'minor basilicas' (as are the aforementioned basilicas).
With reference to the /Basilica di Maria Ausiliatrice//, in a dream, Don Bosco saw a church on which was written the Latin phrase: //Haec est domus mea, inde gloria mea//. 'This is my house, from whence glory will shine forth'. When he built the Church of Mary Help of Christians in Turin, at Valdocco, he had this inscription written on the facade. Often in Salesian contexts reference is simply to the Basilica of/at Valdocco. It was consecrated on 9th June 1868 and was assigned the honour of being a basilica much later. In 2004, the Rector Major made an appeal to the Salesian Family for a major restoration of the Basilica.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Latin, from Greek //basilike//, feminine of //basilikos// royal]
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Sacred Heart|Sacro Cuore]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' beatification.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Atto con cui il pontefice dichiara che un servo di Dio possa essere venerato pubblicamente come beato, e la relativa funzione religiosa; differisce dalla canonizzazione, della quale è un preliminare; processo, causa di b., procedimento col quale l’autorità ecclesiastica valuta i titoli richiesti per proclamare beato un defunto//. The act by which the pope declares that a Servant of God can be publicly venerated as Blessed. Also refers to the religious ceremony at which this happens; it differs from canonisation, of which it is a preliminary step; 'process', 'cause of beatification', the procedure by which the ecclesiastical authority evaluates the qualifications required to declare a deceased person as Blessed.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
Generally in English the term (along with the person who is beatified) is capitalised as 'Cause of Beatification', 'Blessed'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Most likely to be found in the phrase 'Cause of beatification and canonisation' (or 'canonization US spelling).
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[servo di Dio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' benefactors.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //[chi fa del bene ad altri] ≈ donatore, filantropo//. Someone who does good for others, a philanthropist.
!!!''Synonyms:''
donor
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Almost a technical term for Don Bosco, since he regarded his benefactors as working partners, not just money-suppliers.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Viganò ACG304: Don Bosco indicava i 'congregati' erano quelli di: operatori, cooperatori, collaboratori, benefattori..
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Cooperators|Cooperatore Salesiano/Salesiano Cooperatore]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian Central Library.
!!!''Definition:'' (if a precise one exists)
Situated in the General House, it is identified with the preservation and making available of books and publications regarding Salesianity to the Salesian and non-Salesian world.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
EG12-Comunicazione fra segretaria ispettoriale e segretaria generale: Si fa presente anche di inviare sempre alla Segreteria generale (per la Biblioteca centrale) copie di...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Library of Latin Authors.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Published by DB in 1866.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Catholic Readings|Letture Cattoliche]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Library of Italian Youth.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Published by Don Bosco in 1869.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Catholic Readings|Letture Cattoliche]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' blog.
!!!''Definition:'' (if a precise one exists)
A website or part of a website usually maintained by an individual, often with entries in reverse chronological order. It may be commentary or personal reflection.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Many members of the Salesian Family run blogs. When a blog appears on an institutional site (as in, say, www.sdb .org) there is a potential conflict between the seemingly inherent personal nature of a blog and the institution it represents by nature of its being part of that site. sdb.org usually requests that a blog on its site involves more than one person with administrative rights.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Blog could be described as a blend (web + log) or as a short form. The word can function as a noun or a verb in English. From the base word 'blog' we also derive blogger and blogging.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Social communication|comunicazione sociale]]//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' good Christian and upright citizen.
!!!''Definition:'' (if a precise one exists)
A shorthand phrase used by Don Bosco to represent his educational manifesto, traditional in flavour but ever open to new interpretation (Cf. P. Braido, //Prevenire, non riprimere//, p. 231).
!!!''Synonyms:''
civilisation and religion, civilisation and evangelisation, fostering the good of humanity and religion
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco had almost certainly heard variants of this phrase from prominent religious educators before him (e.g. Lodovico Pavoni (1784-1849) who founded the Congregation of the Sons of Mary Immaculate in Brescia some years before him. In Pavoni's Constitutions for his Congregation he indicated: ....riescano ottimi cristiani, buoni padri di famiglia, sudditi fedei, not so different from Don Bosco's version). Already in his earliest printed guide for young people, The Companion of Youth (Il Giovane Provveduto), Don Bosco had written: "buoni cittadini in terra per essere poi un giorno fortunati abitatori del cielo" (good citizens in order to be one day lucky inhabitants of heaven). DB expressed this idea in many variants: good Christians and honest citizens, good Christians and wise citizens.... and after 1875 while looking to missions overseas in South America he broadened it further as : civilisation and religion, or for the good of humanity and religion.
!!!''Usage notes''
Don Bosco had a broad set of intentions in mind when he used this phrase. effectively he meant everything that young people need in order to live their human and Christian life to the full: clothing, food, somewhere to live, work, study, free time; joy, friendship; active faith, God's grace, following a path to holiness; involvement, energy, being part of society and Church.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
ALERT! The Italian term //onesto//, while of course it can mean 'honest', has a broader sense of being an upright person, and this is closer to Don Bosco's intent when he speaks of the //onesto cittadino//. We often see the phrase translated as '... honest citizen' but this is not really correct.
!!!''Citation''
We find, in Italian, in the Giovane Provveduto, the following:
...//farsi buoni cittadini in terra per essere poi un giorno fortunati abitatori del cielo//.
Or in the Regulations for the Oratory for external members he indicates that "when a boy enters this Oratory he must be convinced that this is a religious place aimed at producing good Christians and honest citizens".
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[civilisation|civiltà]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Joseph Cafasso.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Member of the Turinese clergy, first encountered by young John Bosco when the former was a 1st year student of theology at the seminary. DB tells us that it was from Cafasso that he first learned of the importance of the liturgy as the priestly theatre and recreation. When Don Bosco enrolled at the //Convitto Ecclesiastico//, Cafasso was a professor of theology there. By 1846 he was the Rector. Don Bosco says of Cafasso that his secret was his tranquility, always smiling, always courteous, always kind. Cafasso was one of the important sources of the Salesian style and the Preventive System.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Interesting to note that Don Bosco occasionally spelt the name as Caffasso.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Historical Outline|Cenno Istorico]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' John Cagliero.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
As a boy, a member of the first group to be invited to form the Salesian Society at the Oratory. On 26th January 1854, Cagliero, Rua, Rocchetti, Artiglia, together with Don Bosco, gathered in his room at his request and the proposal was made to exercise practical charity towards their neighbour. This event was also the first when the name Salesian was applied. He became the first Salesian Bishop while Don Bosco was still alive. Later became Cardinal. Led the first missionary expedition. Famous photo of Don Bosco handing over the Constitutions on the occasion of the departure to Argentina in 1875.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian|Salesiano]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Cagliero Project.
!!!''Definition:'' (if a precise one exists)
A project providing long term meaningful volunteer placements working with disadvantaged young people in a Salesian setting.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Cagliero Project gives young Australians an opportunity to devote six to twelve months in volunteer service to youth overseas and in Australia.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[voluntary service|volontariato]].//
<iframe src="https://calendar.google.com/calendar/embed?src=eao%40bosco.link&ctz=Australia%2FSydney" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Don Bosco's Rooms.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Reference to the rooms built by Don Bosco and where he lived at the time, at the Oratory. These days converted to a museum in memory of Don Bosco.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian|Salesiano]].//
You can, though unless you understand a little bit about how this wiki works, and how to use wiki markup, it might be best to send your term along to the person who looks after this particular glossary for its inclusion, so others can benefit from it. Similarly, any observation or disagreement with content can be fixed this way.
There are two ways you can add a term:
1. [[The more complicated but most complete way]]
2. [[The easy way]]
-----------
[[Introduction]]
[[How is this dictionary/glossary set up?]]
[[Explaining the righthand side pane]]
!!!!''SL'' is ''[pt]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Canção Nova Community.
!!!''Definition:'' (if a precise one exists)
A Private International Association of the Faithful in canonical terms and member of the Salesian Family, Canção Nova has as its main objective "to evangelise through media": TV, Radio, Internet and audiovisual products, book publication and sales, CDs, videos amongst others.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In 1977, during a meeting with young people, Fr Jonas Abib SDB made an appeal to those present: “Who would like to give a year of their lives to God?” Surprisingly, many said yes. On 2 February 1978, 12 young people began to live in community, in Lorena (SP, Brazil). The Canção Nova Community came from this. it has full time and part time membership, the latter being part of their normal family, professional and social life but lived with missionary intent.
One of the clear motivations for the group has been the Apostolic Exhortation by Paul VI, //Evangelii Nuntiandi//
To carry out its mission, from the beginning of the 1980s Canção Nova began to align itself with various other institutions. The John Paul II Foundation was created as a non-profit and major partner of Canção Nova.
This Foundation is maintained by associates, collaborators, who voluntarily contribute to the institute for the CN mission. In 1980 the JPII Foundation acquired its first radio broadcasting station. in 1989, the first TV transmission. This led to the setting up of the Canção Nova Communication System, made up of radio, TV, internet, a magazine, WebTV and Mobile.
The group was accepted into the Salesian Family in 2009
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' notary.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //in origine il custode dei cancelli del tribunale, poi titolo d’impiegati, di funzionarî, di dignitarî//. Originally the person responsible for the gates to the court, then became a title for clerks, officials, dignitaries.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
If we were to translate this term as 'chancellor' in English it would lead people to believe it is a far more important term than it is! Hence the choice of 'notary', which is closer to the original meaning expressed in the definition above.
!!!''Usage notes''
One of the roles of the provincial secretary. Cf. 3.2.1 //Elementi Giuridici//.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Not to be capitalised, unless it is in reference the Rector major as Grand Chancellor of the UPS.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[notary|notaio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' general chapter, GC, provincial chapter (PC)
!!!''Definition:'' (if a precise one exists)
Can. 631 §1 In an institute the ''general chapter'' has supreme authority in accordance with the constitutions. It is to be composed in such a way that it represents the whole institute and becomes a true sign of its unity in charity. Its principal functions are to protect the patrimony of the institute mentioned in can. 578 and to foster appropriate renewal in accord with that patrimony. It also elects the supreme Moderator, deals with matters of greater importance, and issues norms which all are bound to obey.
C.146 The ''general chapter'' is the principal sign of the Congregation's unity in diversity ... C. 147 The general chapter has supreme authority over the Society and exercises it in accordance with the law ...
C. 170. The ''provincial chapter'' is the fraternal gathering in which the local communities strengthen their sense of belonging to the provincial community ... it is also the representative assembly of all the confreres and local communities. It deliberates about matters which regard the province, with the exception of whatever is entrusted by the Constitutions and Regulations to other organs of goverment.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The principle sign of unity in diversity of the Congregation, a General Chapter is a means by which the entire Society seeks to know the will of God, in a particular moment of history, in order to serve the Church better.(C. 146). The first GC was held in 1877, one year after the definitive approval of the Society. DB was present for the first four, until 1886.
There was also, following Vatican II, a Spaecial General Chapter (SCG). The Special General Chapter was requested of all Religious Institutes after Vatican Council II in the Motu Propio //Ecclesiae Sanctae//. For Salesians it was also the 20th General Chapter. The aim, as spelt out in //Ecclesiae Sanctae//, was to begin the path of renewal and adaptation, (revision of the Constitutions) as well as a return to the Founder's primitive inspirations, by means of a wide and free consultation of members
!!!''Usage notes''
Often capitalised as General Chapter GC or Provincial Chapter PC
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Proper law|diritto proprio (della Società]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' House Chapter.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
Now deprecated as a term and replaced by House Council.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
PV12: il CG XIX, per uniformare le denominazioni di tutti gli organi della Congregazione, deliberava che il 'Capitolo Superiore' prendesse il nome di 'Consiglio Superiore', così come il 'Capitolo della casa' si sarebbe chiamato 'Consiglio della casa'.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[house council]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' superior chapter.
!!!''Definition:'' (if a precise one exists)
The name given to the group of councillors who, under Don Bosco, made up the central government of the Society.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In 1966 the group was enlarged and its name changed to Superior Council. Finally, in 1984, the central government was reorganised and the name was changed to General Council.
!!!''Usage notes''
Th term is now deprected and replaced by ACG Attie del Capitolo Generale or Acts of the General Council
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ACS Atti del Capitolo Superiore]].//
!!!!''SL'' is ''[pi]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' my dear children.
''TL'' is ''[it]'' (Target Language, as above) <br>''Glossed as:'' //cari miei figliuoli//
!!!''Definition:'' (if a precise one exists)
A term regularly used by Don Bosco to address either his boys or his Salesians.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' my dear children.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' charism.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Nel linguaggio religioso, la grazia in genere, come dono elargito da Dio; nel linguaggio teologico cristiano, la semplice grazia santificante, infusa a tutti i credenti con il battesimo, oppure un dono concesso a una persona a vantaggio della comunità e quindi un’attitudine al servizio degli altri; in tal caso si usa distinguere doni naturali e soprannaturali, ordinari e straordinari.// In religious language, grace in general as a gift bestowed by God; in Christian theological language, sanctifying grace given to all believers through baptism, or a gift granted a person for the benefit of the community, and hence an attitude of service of others. In this case there is a distinction between natural and supernatural gifts.
!!!''Synonyms:''
spirit of the Founder
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
While the term goes back to St Paul (cf. 1 Corinthians), one can search in vain for it in Salesian literature until 1977, when Fr Viganò became Rector Major, hence we also indicate this term as a neologism. It came into its own as a result of the Second Vatican Council and in particular the subsequent documentation on consecrated life and the 'founding charism' or 'charism of the founder', though Vatican II itself spoke rather of the 'spirit of the founder', other terms like 'charism of the founder' coming later. At this point it became much clearer that as consecrated life is not part of the Church's very constitution, but a result of gifts of the Holy Spirit, there is a distinction between the 'ecclesial structure' and the 'charismatic structure'. Consecrated life, religious life belong to the latter. This is an important distinction in the Church's life today.
!!!''Usage notes''
When we speak of the //carisma salesiano// or Salesian charism, context will decide whether we are speaking about the charism of st Francis de Sales or of Don Bosco, but a charism that can be lived out by all members of the Salesian Family (be that of St Francis de Sales or Don Bosco).
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
From Church Latin //charisma//, Greek. χάρισμα, der. of χάρις 'grace'.
!!!''Citation''
Vecchi ACG376: missione e del Fondatore, il desiderio di continuare il suo carisma e di far vivere il suo spirito..
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[sensus ecclesiae]], [[consecrated life|vita consecrata]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' charity.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //L’amore che, secondo il concetto cristiano, unisce gli uomini con Dio e tra loro, attraverso Dio.// The love that unites human beings to God and among themselves, in the Christian understanding of the term.
For Catholics, charity is one of the three theological virtues, and according to St Paul, the greatest of them.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Desramaut includes the term among his 100 key words of Salesian spirituality. From the very beginning, from the famous 'promise of charity', DB spoke of the exercise of charity toward one's neighbour as the purpose of his incipient Society.
Mention should be made here of a very specific use of the word 'charity' by Don Bosco, which we now know as the ''promise of charity''. On 26 January 1854, according to a note by Fr Rua, four young men along with Don Bosco came together in DB's room and were invited to undertake a proving period in the practical exercise of charity toward neighbour, which would then be a promise but ultimately would be vowed. Instead of using the word 'novitiate' which may have frightened them off, Don Bosco cleverly used 'proving time'.
Salesian Constitution 10 goes on to describe what is called ''pastoral charity'' as charity "characterized by that youthful dynamism which was revealed so strongly in our Founder and at the beginnings of our Society." The //Charter of Salesian identity// indicates that pastoral charity, which finds its source and model in the Good Shepherd, was a constant inspiration for Don Bosco in his work as an educator and evangelizer, guiding his life, prayer and missionary impulse. (Charter of Identity May 24 2011).
!!!''Usage notes''
Salesian discourse includes ''pastoral charity'' apostolic passion), the kind of charity at the heart of Don Bosco's activity and being, and ''educative charity'', a term used by Fr Vecchi, but not found in Fr Viganò's extensive literature.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Charity translates the Greek term //agape// and is distinct from //eros// or love-passion (self-love), and //filia// or friendship, which is a benevolent love. The absolute model for charity is God alone.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[pastoral charity|carità pastorale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' pastoral charity.
!!!''Definition:'' (if a precise one exists)
An apostolic impetus that makes us seek souls and serve God alone. (C. 10 SDB Constitutions)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Salesian Constitution 10 goes on to describe pastoral charity as "characterized by that youthful dynamism which was revealed so strongly in our Founder and at the beginnings of our Society". The Charter of Salesian identity indicates that pastoral charity, which finds its source and model in the Good Shepherd, was a constant inspiration for Don Bosco in his work as an educator and evangelizer, guiding his life, prayer and missionary impulse. (Charter of Identity May 24 2011)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
He translated his burning pastoral charity into concrete and practical forms of educational activity, becoming the "father, teacher and friend" of the young. (E. Viganò AGC 337)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Charter of identity|Carta di comunione nella Famiglia Salesiana]], [[charity|carità]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian Mission Statement.
!!!''Definition:'' (if a precise one exists)
Inspirational document produced in 2000 for the entire Salesian Family
From the presentation of the document on 25 November 2000: it offers 'the orientation and sensitivity of the Groups of the Salesian Family in terms of apostolic mission. We can describe it as an inspirational text. It calls from on a commitment from each of the Family Groups that is characterized as a Salesian commitment.'
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
With this second Charter (the first is the Common Identity Card' or Charter of Communion, it becomes visible that ours is an apostolic Family and that it operates with pastoral intent and meaning.
!!!''Usage notes''
One sometimes hears reference to 'card', as in 'Mission card' or 'identity card', which in the latter case is a separate document. Certainly the first makes little sense in English; the second does make sense (people hold identity cards after all) but the nature of the document is more a 'charter' than it is a mere legal document.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The Italian word //carta// covers a range of possible meanings: card, documents (pl), charter, certificate
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Identity Card|Carta di comunione nella Famiglia Salesiana]], [[Charter of charismatic identity|Carta di Identità carismatica della Famiglia Salesiana di Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Common Identity Card (of the Salesian Family)
!!!''Definition:'' (if a precise one exists)
Inspirational document produced in late 20th Century. A contribution of reflection on the Salesian spirit, presenting "the fundamental elements which build up unity in Don Bosco's spirit".
!!!''Synonyms:''
Salesian Identity Card, Common Identity Card, Charter of Communion
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Salesian Family is a vast movement comprising congregations, institutes and associations, both religious and lay, that have grown out of the heart and pastoral experience of Don Bosco’s charism. Besides the first groups founded by Don Bosco himself, others have emerged over time which are seen to share a common mission with them: namely, the evangelisation and education of young people, especially the most needy.
On 31 January 1995, the then Rector Major, Fr Egidio Viganò, gave the Salesian Family the ‘Common Identity Card’,(//Carta di Comunione// in its original Italian title) and some years later, his successor Fr. Juan Edmundo Vecchi gave the Family the ‘Common Mission Statement'. These two documents helped the various groups to deepen their common spirituality and apostolate.
From 2002 the Rector Major at the time, Fr Chávez, made great efforts to strengthen the unity of the various groups, giving renewed impulse, not only by welcoming new groups, but also by offering clear guidelines on the identity, spirituality and apostolic character of the Salesian Family, especially through the teaching of his annual Strenna.
!!!''Usage notes''
The 'Common Identity Card' should not be confused with the 'Charter of Charismatic Identity of the Salesian Family' announced at the concluding session of the 28th ‘Salesian Family Spirituality Days’ (January 2012).
The term ''family'' is continually used in Salesian tradition to indicate in a generic manner the bonds existing between the various groups and is applied in different ways according to the nature of the relationship. This bond or relationship cannot be reduced to mere friendly rapport. It is rather the external expression of an internal and charismatic communion. It helps therefore to understand the different titles to membership of the Salesian Family.
Membership is fostered by a common spirit, which leads to a vast and complementary mission to the young and the common people; and by certain specific and original characteristics which justify official recognition, which is given through a specific title.
A first title is that of the Salesians, Daughters of Mary Help of Christians and Cooperators
They are the first three central groups of which Don Bosco is the founder in a quite special manner. They were constituted by him as the direct heirs of his work; they are the foundation and point of reference for all the other groups in whatever concerns the spirit, the mission, and the method of pedagogical and pastoral activity.
Another title to membership is that of the various groups of consecrated life which came into existence at a later date through the creative force of the charism. They enrich the common patrimony of the Family with particular charismatic expressions.
Finally there is a third level of membership which comes under the heading particular titles to membership. This category is of wider extension than those of the groups previously mentioned, but is equally bound in an objective manner to the vitality and riches of the spiritual legacy of Don Bosco. The unifying energy of his charism is indispensable also at this wider level.
The juridical title to membership is indicated in the letter of the Rector Major granting official recognition in response to requests made by the various groups.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
The Charter of Identity for our Family, which I intend to present to you, will stimulate and guide us along this path. (from the presentation to the document, 24 may 2011).
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Common Mission Statement|Carta della Missione della Famiglia Salesiana]], [[Charter of Charismatic Identity|Carta di Identità carismatica della Famiglia Salesiana di Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Charter of Charismatic Identity of the Salesian Family of Don Bosco.
!!!''Definition:'' (if a precise one exists)
From presentation of the Identity Charter by the Rector Major: //Ciò che viene descritto in questa terza Carta, che comprende e integra le due precedenti, è l’identità carismatica della Famiglia Salesiana, ossia tutto ciò che fa riferimento alla missione, allo spirito, alle relazioni, alla formazione, ai metodi di educazione ed evangelizzazione. Certamente anche la storia del carisma, considerato nelle sue origini e nel suo sviluppo, fa parte della identità; infatti un’identità senza memoria, non avendo radici, è priva di futuro. Per questo la Carta raccoglie l’esperienza dei diversi Gruppi della Famiglia, tratteggiando, in sintesi, quella identità del carisma salesiano che è patrimonio di tutti.//
What is described in this third Charter, which includes and integrates the two previous ones, is the charismatic identity of the Salesian Family, that is, everything that refers to the mission, spirit, relationships, formation, methods of education and evangelization. Certainly also the history of the charism, considered in its origins and in its development, is part of identity; in fact, an identity without memory, having no roots, is without a future. For this reason, the Charter gathers the experience of the different Groups of the Family, summarising the identity of the Salesian charism that is the heritage of all.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Charter of Charismatic Identity of the Salesian Family of Don Bosco is dated 31 January 2012.
It is easy to confuse terminology in reference to these various 'charters', especially since what is known in Italian as the //Carta di Comunione della Famiglia Salesiana di Don Bosco// has been commonly known in English as the 'Common Identity Card'. That was presented by Fr Vecchi, the then Rector Major, on 31 January 1995.
The 2012 Document 'includes and integrates' the 'Common Identity Card' (aka //Carta della Comunione ...// as well as the 'Salesian Mission Statement' (aka //Carta della Missione ...//) under the title 'Charter of Charismatic Identity' (aka //Carta dell'Identita carismatica ...//). It is not hard to see why there can be some terminological confusion.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Perhaps adding to the confusion somewhat is the fact that the Italian //carta// is sometimes glossed as 'Card' and sometimes as 'Charter'. It can mean both, of course, but the better translation would always have been 'Charter' from the outset, rather than 'Card'.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Mission Statement|Carta della Missione della Famiglia Salesiana]], [[Common Identity Card|Carta di comunione nella Famiglia Salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' house.
!!!''Definition:'' (if a precise one exists)
Can. 608 A religious community is to live in a lawfully constituted ''house'', under the authority of a Superior designated according to the norms of law. Each ''house'' is to have at least an oratory, in which the Eucharist is celebrated and reserved, so that it may truly be the centre of the community.
Can. 609 §1 A ''house'' of a religious institute is established, with the prior written consent of the diocesan Bishop, by the authority competent according to the constitutions.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
The Italian word, but perhaps the English word as well, has broader meaning also of 'home'. It is worthwhile recalling this factor (the 'family' feel of //casa//), since there is a tendency today to speak more often of our //opere//, 'works'. An authoritative commentator on Don Bosco's times, especially on life at the Oratory, A. Caviglia, points out that Don Bosco's Oratory had to be a home, i.e. a family, not just a //collegio// or boarding establishment/school. Note the expression //casa che accoglie ...// 'a home that welcomed', in C: 40.bThe various 'Lives' (of young people) that DB wrote also stress this family atmosphere. It is essential to the Preventive System. (A. Caviglia, //La vita di Besucco francesco//... pp 157-58. But there is also the //Casa religiosa// or 'Religious House' understood in canonical terms as a public non-collegial juridical person.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
One notes that 'presence' often replaces 'house', as does 'work' or 'works' (often written as 'Work' or 'Works'), clearly a calque from the Italian //opera// meaning 'work', as in a specific mission in a specific setting such as an oratory, parish, school. In English we might refer to the 'community' and then name the specific work as such.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[community|comunità]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' house attached (to the Oratory).
!!!''Definition:'' (if a precise one exists)
The home or hostel or shelter and boarding house (established in 1847 and attached to the Oratory.) Don Bosco’s preferred name for this boarding house is “Home Attached to the Oratory (//Casa annessa all’Oratorio di ~SFdS//)
!!!''Synonyms:''
The Annex, Home attached to the Oratory
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In 1847, DB began a work of rehabilitation of youngsters deprived of a place to live, by taking up some more space in the Pinardi House. It began simply as a place from where they could attend school or go to work in the city. It gradually became a boarding school and was the beginnings of the //convitto-collegio// experience.
With the establishment of the home there developed a more specialised and restricted application of the educational method, in as much as the protective-defensive character of the preventive system takes on a larger role, beyond its promotional and supporting character
Note that DB also included the Oratory within his understanding of the //casa annessa//. Cf. citation below.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
DBCenni Storici: ...questo bisogno si studiò di provvedere colla casa annessa e detta anche Oratorio di S. Francesco di Sales.
"While they are instructed in the truths of the faith, they shall also be started on some trade or line-of-work, as is presently done in the home attached to the Oratory of St Francis de Sales in this city" (Constitutions of the Salesian Society (1858), 'Purpose of this Society', art. 4.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[oratory|oratorio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' charitable institution
!!!''Definition:'' (if a precise one exists)
An example is the //Regia Opera di Mendicità Istruita// or the Royal work for the education of the Poor, which gave basic education (mainly to girls) in Turin in the 1850s.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term was in use in Don Bosco's time, and he often made appeals to existing charitable institutions, be they religious or secular, for financial assistance.
But it became crucial in 1879 when Don Bosco was fighting a Leftist Government in order to keep his secondary classes (//ginnasio//) open at the Oratory. The Government looked upon his school as a //ginnasio privato// or private secondary school (with strict regulations regarding teacher certification etc.), whereas Don Bosco wanted to argue it was either a //ginnasio privato gestito da una casa di beneficenza// or secondary school run by a house of charity or a //scuola paterna// (or //istituto paterno//) or home school. This would have meant spending less money on teacher qualification. He even presented a petition to the King, //Le scuole di beneficenza dell’Oratorio di S. Francesco di Sales davanti al Consiglio di Stato//. Oratory classes were closed because of his non-conmpliance and were not re-opened until he complied with the request for teachers who were properly accredited. Don Bosco lost this battle!
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Probably best not translated directly as 'house of charity' though you could do worse. Chairtable institution is the better choice.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' General House.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //generalìzio agg. [der. di generale]. – Del padre o della madre generale di un ordine religioso: la casa generalizia.// House belonging to the father or mother general of a religious order.
!!!''Synonyms:''
Generalate
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
To be distinguished from the //Direzione Generale//, though this latter is housed in the //Casa Generalizia//. But note comment below.
!!!''Usage notes''
Note that in English the term covers the whole establishment. In Italian there is a clearer distinction between the //direzione generale// and the //casa generalizia// which tends to be the community as such, including members who do not work in the //Direzione Generale//.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Casa Madre]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Mother House.
!!!''Definition:'' (if a precise one exists)
Refers to Turin, Valdocco, always, whereas occasionally these days the //Casa Generalizia// (Rome) is referred to as the //Casa del Padre//, or the 'Father's house', not to be confused with heaven!!
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Casa Generalizia]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Pinardi House.
!!!''Definition:'' (if a precise one exists)
Reference to the beginnings of the Oratory and the famous snatch of conversation recorded by Don Bosco between himself and Pancrazio Soave offering a //laboratorio// 'laboratory' instead of an //oratorio// 'an oratory' (Recorded in the //Memoirs of the Oratory//). It was really a //tettoia// or a shed hanging off the back of a building, and eventually Don Bosco bought the entire building. None of the actual Pinardi Shed remains, but its location is designated more or less by the Pinardi chapel at Valdocco.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' farmhouse.
!!!''Definition:'' (if a precise one exists)
The term //cascina// refers to a sizeable farmhouse and to the farmlands connected with it. (Source: Lenti, //Don Bosco History and Spirit// Vol 1 p. 34).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The //cascina// was a social-agricultural unit usually of moderate size (say, 20 acres), with one central building that originally housed an extended family. The man who ran the farm and lived with his family in a section of the farmhouse was called a //massaro// (manager). In the case of the Biglione cascina at The Becchi, they lived in Turin and employed a tenant farmer who lived at the cascina. The tenant farmer was termed a //mezzadro// or 'half sharecropper', since according to unwritten Piedmontese law, he worked for half the produce. Francis Bosco was this person at the Biglione cascina.
!!!''Usage notes''
While the term is obviously a more general one still in use today, it has specific reference in Salesian terminology to the Cascina Biglione.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' cottage.
!!!''Definition:'' (if a precise one exists)
The place where Don Bosco grew up (home) at The Becchi is referred to in Italian as the //Casetta//.
!!!''Synonyms:''
little home
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Now turned into a museum.
!!!''Usage notes''
In some English-speaking we cannot use 'little house' (which has the connotation of 'outhouse') 'Small home' maybe, or simply 'home', while some other English-speaking areas do not refer to this entity as 'The Cottage'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Chavez ACG385:.. Dall'umile Casetta dei Becchi alla Città di Torino, da Torino a tutta...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' catechism.
!!!''Definition:'' (if a precise one exists)
(1) "...this Congregation was just a catechism" (DB //Cenno Istorico//). here the term embraces the activities, content of Don Bosco's particular way of instructing young people to be 'upright citizens and good Christians'.
(2) Summary of religious doctrine often in the form of question and answer.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco's very first description of his congregation was of a group of people who gave catechetical instruction or that had that as its prior aim.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[preventive system|sistema preventivo]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' CDB Volunteers With Don Bosco.
!!!''Definition:'' (if a precise one exists)
The Volunteers CDB are consecrated lay Salesians. They recognise the Rector Major, successor to Don Bosco, as the centre of unity.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The group, which has official membership of the Salesian Family, has a Central Moderator (//Responsabile Centrale// in Italian) with a Council, and a (Salesian) Ecclesiastical Assistant appointed by the Rector Major.
The first group came into existence in 1987 in Venezuela, but there were another three groups in 1991 in Malta, Paraguay and Sicily. They were brought together by Fr Viganò in 1993 at the General House, and for this reason they regard that community as their 'Mother House'. The group is seeking recognition as a Secular Institute. They claim that they draw their charismatic inspiration from Don Bosco's original idea of the 'extern Salesian'.
They do not detach themselves from their own environment, work and family, but work within them and bring to them the fullness of their radical option of love. They live their vocation as consecrated seculars in the spirit of Don Bosco. They adopt Salesian asceticism based on work and temperance which are, as Don Bosco says, 'two means with which we can overcome everything and everyone'. The Volunteers CDB are present in a number of countries in the world: Argentina, France, Honduras, El Salvador, Italy, Malta, Paraguay, Peru, Czech Republic, and Venezuela.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[es]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Ceferino Namancurá .
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
Zephyrinus
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
A moot point regarding the spelling: In the US the tendency is to Anglicise names but in any number of instances, saints 'from the South' with Spanish names, remain that way (Juan Diego...), hence 'Ceferino'. The British think otherwise and argue that since the Beatified's feast falls on 26 August and Pope St Zephyrinus (after whom he was named) has a memorial on that day (though not in the Universal Calendar), then we should adopt 'Zephyrinus'. It raises the whole question of naming - in general, the rule is to anglicise all Christian/first names except where there are well-recognised continuations of the original form (as in the cited case for some Spanish names in the US). The 'Ceferino/Zephyrinus' case showed up the importance of not simply adopting the Italian version in English translation - in this case the Italians have several versions: Zefirino, Zeffirino, even Zefferino, Zeferino.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian holiness|santità salesiana]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' celebret. Remians untranslated
!!!''Definition:'' (if a precise one exists)
A document from the Bishop or Religious Superior allowing a priest to celebrate Mass.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Historical Outlines.
!!!''Definition:'' (if a precise one exists)
Document(s) of an official nature written by Don Bosco, bearing the date 1862, wherein he describes the beginnings of the Oratory and the kind of young people who first drew his attention and his commitment.
!!!''Synonyms:''
Historical Sketches
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco wrote several //cenni storici// as preambles to major documents, e.g. to the articles of the Constitutions, to applications for both diocesan and pontifical approval of the Congregation. In the 1862 version DB describes the beginnings of the Oratory as a response to the situation of young people on the streets, in factories, and in prison ' all at risk for want of religious instruction.
!!!''Usage notes''
Note the need for disambiguation with the //Cenno Istorico//
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Cenno Istorico]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' Historical Outline.
!!!''Definition:'' (if a precise one exists)
Presented in Rome 1874, its full title was //Cenno istorico sulla Congregazione di S. Francesco di Sales e relativi schiarimenti// (Historical Note on the Congregation of St. Francis de Sales and certain clarifications)
!!!''Synonyms:''
Historical Sketch
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco describes the beginnings of the Oratory as developing from the fact that he took over Father Cafasso's catechetical instruction in the room (chapel) adjoining the sacristy of the Church of St Francis. The beginning was with two young adults (in this document, by contrast with the Garelli version in his //Memoirs//) towards the end of 1841. At the same time he was concentrating on young adults who had been released from prison.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Cenni Storici]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' centres for vocational discernment.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Depending on context this term may refer to a centre for religious or priestly discernment or for a more general discernment for young people as to their life direction.
!!!''Usage notes''
ALERT! In English, care must be taken in context to avoid this referring to 'job preparation' or 'vocational training', a common understanding of 'vocational' in general parlance. In Italian, this will be more likely to be referenced as //formazione professionale//
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[vocational accompaniment|accompagnamento vocazionale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian Catechetical Centre.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Founded in 1939 by the then Rector Major, Fr Peter Ricaldone
!!!''Usage notes''
Of historical interest.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Leisure Centre.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Not necessarily the same entity as a youth centre, however.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[oratory|oratorio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Education centre.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
For translators, the Italian term may be a 'false friend'. Rarely if ever does it refer to a place for initial or ongoing Salesian religious formation (these are called Study Centres). Instead the term refers more to what we in English would call 'education'. However, the term may often be applied to a centre of Salesian formation (or Christian formation) for lay people.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
One might nornmally expect 'Centro di formazione' to be followed by the adjective 'professionale', or in other words a vocational studies/training centre. Italian is much more like to speak of //formazione// where English might use 'education', but the terms //formazione// and //educazione// are often interchangeable in Italian,
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[technical training|formazione professionale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Don Bosco Study Centre.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Founded at the UPS in 1973 as part of the post-conciliar development of a scientific historical study of the Salesian charism
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' youth centre.
!!!''Definition:'' (if a precise one exists)
GC21 nos 121 ff. An environment for older youth (//[[giovani]]// as distinct from //ragazzi//), is attentive to their needs, is based very much on group relationships, personal contacts and commitment. It often has a variety of activities like sports, cultural activities.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
Be aware that there is actually a distinction in theory between Oratory and Youth Centre (cf. R. 11,12) but it rarely applies in practice. There is also, according to GC21 a third term, the combination of Oratory-Youth Centre. This is an environment open to all ages and appropriately managed for each age group. GC21 nos 121 ff. offer descriptions and definitions of both entities. For the Youth Centre it suggests that it is
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[oratory|oratorio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[em]'' (Target Language, as above) <br>''Glossed as:'' ordinary people.
!!!''Definition:'' (if a precise one exists)
//ceto//: TRECCANI Categoria di cittadini caratterizzata da una particolare condizione sociale e civile, talvolta da peculiari credenze e comportamenti, dal tipo di disponibilità economica, più spesso dall’attività che svolge. Category of citizens characterised by a particulqr social and civil condition ... hence //ceto popolare// the popular class.
!!!''Synonyms:''
//ambienti popolari//, //adulti del basso popolo// (this latter used by Don Bosco himself)
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The gloss chosen here comes from C. 29's translation of //ceti popolari//.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ambiente]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en ]'' (Target Language, as above) <br>''Glossed as:'' cleric.
!!!''Definition:'' (if a precise one exists)
TRECCANI: 1. Nel linguaggio della Chiesa, persona cui è demandato l’ufficio di guidare spiritualmente i fedeli (contrapp. a laico). ... 2. Nell’uso com., giovane avviato al sacerdozio, quando ha indossato l’abito talare ... In the Church's language, a person with responsibility for spirituall guiding the faithful (as opposed to a lay person) ... 2 In common usage, a young man on the way to the priesthood, having donned the cassock or clerical habit ...
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In Salesin circles the term 'cleric' has been applied rather in the second definition provided above rather than in the strict canonical sense. Don Bosco's 'clerics' (who were not officially clerics in canon law) were often no more than 16 years of age. Even today, Salesians refer to 'clerics' meaning young men in stages of formation leading to priesthood (but they may not be 'clerics' in the strict canoncial sense, at least not yet).
!!!''Usage notes''
Note the abstract noun 'clericalism', which has negative connotations.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
An accepted abbreviation is Cl.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' cholera (Asian strain).
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Malattia infettiva acuta, causata da un vibrione (//Vibrio cholerae asiaticae//). Nella diffusione sono importanti i portatori, individui sani o guariti che ospitano nel loro intestino, e quindi eliminano, i vibrioni per mesi e anni. // An acute infectious disease caused by the vibrio bacterium. Carriers are crucial to the spread of the disease, individuals who are healthy or who have recovered but carry the bacterium in their intestines. Human faeces carry the bacteria.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The cholera pandemic that struck Turin in the 1850's, summer 1854 to be precise, striking the Borgo Dora in a particularly bad way. 1,438 of the 2,533 struck down, died. The parish in which the Oratory was located lost 53% of its people.
Like the earlier pandemics, cholera spread from the Ganges delta of India (hence the 'asiaticus'). It had high fatalities among populations in Asia, Europe, Africa and North America. In 1854, which was considered the worst year, 23,000 people died in Great Britain.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[St Vincent de Paul Conference|Conferenza di San Vincenzo de Paoli]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Don Bosco's Early Apostolate
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Clearly the title 'Don Bosco's Early Apostolate' is not a translation of //cinque lustri// (a //lustro// is a 5-year period, so 5 x 5 = 25 years). //Cinque Lustri di storia dell'Oratorio salesiano fondato dal sacerdote D.Giovanni Bosco// was written by Fr Giovanni Bonetti and first translated into English under the title 'Don Bosco's Early Apostolate' in 1908. It was then republished for the canonisation as 'St John Bosco's Early Apostolate'. It has been long out of print.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' circumscription.
!!!''Definition:'' (if a precise one exists)
"Normally the circumscriptions of our Society are provinces and vice-provinces, As regards other eventual juridical circumscriptions, their internal structure and representation at the general chapter will be defined in the decree of erection, in line with Salesian spirit and tradition" (SDB Constitutions C. 156)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The broader term found in general ecclesiastical usage is 'ecclesiastical circumscription', but while in frequent use (e.g. in the //Annuario Pontificio// or in important communications such as Pope Benedict XVI's letter to Chinese Catholics) it is so broad an understanding of limitation that it begs for clearer definition.
Ecclesiastical circumscriptions may be territorial or they may be personal. They may be more theological than structural in intent - as for example the definition of a Diocese as //portio populi Dei//, implying a community of people, a Bishop, a presbyterate, but not territory, at least not essentially. Circumscriptions can be structural and juridical, or the term might even be used in a broad sense of a communal ecclesiastical grouping.
The Salesian C. 156 quoted above indicates the eventual existence of circumscriptions other than provinces or vice-provinces. These are called 'special circumscription' in English (//circoscrizione a statuto speciale// in Italian) and each is determined by the decree which sets it in place.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
"By first profession a member is enrolled in the juridical circumscription for whose service he asked to be admitted". (C. 160)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[province|ispettoria]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Conference of Italian Salesian Provinces.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[provincial conference|conferenza ispettoriale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' civilisation, civility.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //La forma particolare con cui si manifesta la vita materiale, sociale e spirituale d’un popolo (eventualmente di più popoli uniti in stretta relazione) – sia in tutta la durata della sua esistenza sia in un particolare periodo della sua evoluzione storica – o anche la vita di un’età, di un’epoca ... Nell’uso com. e più tradizionale, è spesso sinon. di progresso, in opposizione a barbarie, per indicare da un lato l’insieme delle conquiste dell’uomo sulla natura, dall’altro un certo grado di perfezione nell’ordinamento sociale, nelle istituzioni, in tutto ciò che, nella vita di un popolo o di una società, è suscettibile di miglioramento.// The particular form in which the mateiral, social and spiritual life of a people manifests itself (or possibly more than one people strictly realted to one another) - be it for the entire extent of its life or for a particular period of its historical evolution ... in the more common and traditional use of the term, it is often a synonym of 'progress', by contrast with barbarism, pointing to a degree of perfection in social order, institutions ...
!!!''Synonyms:''
development, advancement, culture, progress ...
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The Italian term //civiltà//, especially as used by Don Bosco (we find it as early as 1848 in his //Il cristiano guidato//), is not easily rendered in English, other than by a now archaic sense of 'civility'. Today 'civility' is more an individual trait,something akin to urbanity, but the meaning in which we find it still, in Italian, has a more collective, social aspect, 'civilisation' then, but even that does not quite do the term justice.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[good Christian and upright citizen|buon cristiano e onesto cittadino]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' family atmosphere/spirit/environment.
!!!''Definition:'' (if a precise one exists)
A Constitutional term (C.47), synonymous with 'family spirit' and descriptive of the educative community.
!!!''Synonyms:''
family spirit
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Viganò ACG326:...esperienza di vita educatori e giovani in un clima di famiglia, di fiducia e di dialogo
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[family spirit|spirito di famiglia]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' CMB Community of the Mission of Don Bosco.
!!!''Definition:'' (if a precise one exists)
A Private Association of the Faithful as understood in Canon Law, which gained membership of the Salesian Family in 2010. They describe themselves as a new form of Salesian community made up of lay people: young adults, adults and families who seek to live according to the inspirations of the Gospel, following a Rule of Life.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The group has its general headquarters in Bologna at the Salesian Parish of the Sacred Heart. It came into existence in 1988 in formal terms (though founded in 1982 in the Diocese of Bologna by a group of lay people following the intuitions of the Holy Spirit) and was juridically set up in 1994. The group is part of the Salesian Youth Movement in Italy, Madagascar, Burundi, Argentina. Its three key features are unity, charity towards the young and the poor, and living simply in a Salesian family style.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' //CNOS Centro Nazionale Opere Salesiane//. National Centre for Salesian Works.
!!!''Definition:'' (if a precise one exists)
An entity with legal status in Italy.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' coadjutor.
!!!''Definition:'' (if a precise one exists)
The definitive Regulations printed in 1877 make a clear distinction between a 'coadjutor' who might have been simply a domestic, and the Salesian coadjutor brother.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term 'coadjutor' is found for the first time in the register of the names of the pupils at Valdocco in December 1854, where it appears next to the name of the 30-year-old Alessio Peano, but apparently implies nothing of a religious nature. It was a delicate touch on the part of Don Bosco in respect of those whom others used call simply 'servants'. For Don Bosco this person was something more, a collaborator. There were coadjutors with vows and those who were simply paid workers, as time went on. It was only in 1883 that GC3 reserved the term officially for lay Salesians.
!!!''Usage notes''
'coadjutor' is a variant in use in English today. Many English-speaking provinces prefer just 'brother'; occasionally one hears 'lay brother'. And yet another variant is 'coadjutor brother'. The question of terminology in this regard was raised at the 3rd General Chapter (1883)
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Its origins are from the Latin //Fratres coadiutores//, an ecclesiastical term from earlier times (glossed as Lay Brother in English). It fails to pick up Don Bosco's clever concept of the true Salesian expressed by the lay dimension. The term 'Lay Salesian' (Italian //salesiano-laico//) has gained some currency in recent times and seems more adequate.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' gang.
!!!''Definition:'' (if a precise one exists)
The term employed around the 1850's, 60's to describe the gangs in Turin and particularly around the Valdocco neighbourhood. Hence the //Cocca Gambero// (Crab Gang), //Cocca Moschino// (the Moschino district was one of the most unruly)..
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' coillaborator (but see discussion further on)
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Chi lavora insieme con altri per la produzione di qualche cosa, o collabora alla realizzazione, allo sviluppo, alla riuscita di un’attività ...// Someone who works together with others to produce something, bring about, in development, carrying out an activity ...
!!!''Synonyms:''
cooperator, associate, partner, co-worker, colleague, contributor, lay mission partner ...
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Note that 'collaborator' still carries negative connotations in some parts of the English-speaking world. An alternative term could be 'lay partner' or even, depending on the degree of collaboration, 'lay mission partner'. This latter term, sometimes abbreviated as LMP, is in common use among Salesians in the Philippines.
!!!''Usage notes''
It is helpful to look at the forums in Wordreference.com, to realise that //collaboratore// is almost never glossed as 'collaborator' in English.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[belonging to the Salesian Family|titoli di appartenenza alla famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' boarding school, college.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Col tempo nell’uso corrente il termine c. fu applicato sempre più a istituti d’istruzione ed educazione, anche di carattere secondario, caratterizzati dalla convivenza degli alunni e spesso anche degli insegnanti sotto il medesimo tetto. Questo tipo di c. si sviluppò soprattutto con la Controriforma, per opera di vari ordini religiosi e con diverso carattere: mirando cioè a istruire fanciulli delle classi meno abbienti, a formare le classi dirigenti, a preparare ecclesiastici ecc.// Over time, the term 'college' in current usage was increasingly applied to educational institutions, including secondary institutions, characterised by pupils and often teachers too living under the same roof. This type of college developed during the Counter-Reformation through the work of various Religious Orders and of a different nature: educating children of the poorer classes, forming the leadership class, clerics, etc.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco's use of //collegio// was typical of the definition provided above. 'The Annex' or 'House Attached' was effectively the beginnings of the //collegio// for Don Bosco.
!!!''Usage notes''
Be aware that in the US, 'college' would be an inaccurate rendition, applying as it does only to a post-secondary institution.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
//collegio// gives rise to //collegializzazione// in Italian, barely translatable in English.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[the house attached|casa annessa]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' friendly talk.
!!!''Definition:'' (if a precise one exists)
In the strictly Salesian sense //colloquio// is the friendly (and regular) personal chat between the Rector of the community and his members.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
What Salesians once called the //rendiconto//. Some still use this term.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Rector|direttore]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' sodality.
!!!''Definition:'' (if a precise one exists)
~LentiDBHS-3, p.23 n.3: A traditional religious association, especially a parish form
!!!''Synonyms:''
company
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term 'company' reflects the post-Tridentine nomenclature of religious associations. English favours such terms as 'association', 'society' and 'sodality' to express this, and possibly 'sodality' was the most common in English-speaking Salesian circles to express the groups encouraged by Don Bosco at his Oratory.
Thus, in Don Bosco's time and for many years subsequently, we had the //Compagnia di San Luigi Gonazaga// (St Aloysius Sodality), the //Compagnia dell'Immacolata Concenzione// (Immaculate Coneption Sodality), the //Compagnia del Santissimo Sacramento// (Blessed Sacrament Sodality), the //Compagnia di San Giuseppe// (St Joseph's Sodality), the //Compagnia del Picco Clero// (Altar Boys Society).
!!!''Usage notes''
Was Don Bosco influenced by the //Compagnia di Gesù// (Society of Jesus or Jesuits) in his use of this term?
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Conference of St Vincent de Paul|
Conferenza di San Vincenzo de Paoli]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' companion.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //chi si trova insieme con altri in particolari circostanze o per un lungo periodo della vita, o esercita la medesima attività, o vive nello stesso ambiente.// Those who find they are together with others in particular circumstances, or for a long time in their life, or carrying out the same activity ...
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
While it is nearly always possible to translate //compagno// with 'companion', the sense of the term in English can often be simply 'friend' or 'schoolmate', and this might be the best way to go first off.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[accompaniment|accompagnamento]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Municipality.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Il Comune è, nell’ordinamento italiano, l’ente pubblico territoriale e rappresentativo di base. // In the Italian legal systme the //Comune// or Municipality is the basic territorial and representative body.
!!!''Synonyms:''
district, city, town
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[mandamento]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' social communication.
!!!''Definition:'' (if a precise one exists)
//Inter Mirifica//, Vatican II, introductory paragraph: Among the wonderful technological discoveries which men of talent, especially in the present era, have made with God's help, the Church welcomes and promotes with special interest those which have a most direct relation to men's minds and which have uncovered new avenues of communicating most readily news, views and teachings of every sort. The most important of these inventions are those media which, such as the press, movies, radio, television and the like, can, of their very nature, reach and influence, not only individuals, but the very masses and the whole of human society, and thus can rightly be called the ''media of social communication''.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A sector which constitutes one of the apostolic priorities of the Salesian mission (cf. C. 43). For Salesians, then, it goes back to the charismatic beginnings of the Congregation, Don Bosco's work of the oratories, which extended to activities such as the spreading of good literature, theatre, academies, music ... and publishing. At one point he said "Our publications tend to form an ordered system, broadly encompassing all classes forming human society" (In his Circular on spreading good literature). Cf. [[SSCS Salesian Social Communication System| Sistema Salesiano di Comunicazione Sociale]]
!!!''Usage notes''
The Church, since Vatican II, has regularly employed the term 'Social Communication' (mostly in its capitalised form) where many others would say just 'communication(s)', but given the more profound content in the Church's understanding of the term, we do well to stay with it in a number of situations. Social Communication as a term also helps cover much of what is intended by an even less familiar term (in English at least), 'educommunication'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Often we find the phrase 'the means of Social Communication' (including in many Church documents). There seems less need to stay with this term - 'means' is probably a calque, a translation of //mezzi//. A better expression is 'Social Communication(s) media'.
!!!''Citation''
“Social Communication is ever more becoming a mass educational presence, a shaper of thinking and creator
of culture. Through it are drawn up and disseminated collective evidence which underlies new models of life
and new criteria for judgment. Its incisive effect and its ever more mass presence make Social Communication a
real and authentic alternative school for very large sectors of the world’s population, especially for young people
and popular sectors” (GC21, 148)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[SSCS Salesian Social Communication System| Sistema Salesiano di Comunicazione Sociale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' community.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Insieme di persone, per lo più religiosi, che vivono insieme sotto una regola comune//. (Religious meaning) a gorup of people, mostly religious, living together under a common rule.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Community is notoriously difficult to define, as it can be any grouping of human beings in real time and space or virtually, but we clearly make reference here to the charismatic context of Salesian life and action.
A unified body of individuals as in:
(a) the Salesian community broadly speaking = the Salesian Society
(b) the Salesian community as a local grouping = the religious community
(c) a group linked by common policy as in the educative and pastoral community = EPC with Salesian religious community as the animating nucleus.
In the broadest sense of (a) above, C. 2 indicates that "We, the Salesians of Don Bosco (SDB), form a community of the baptised".
By C. 3 it is describing fraternal community as one of the inseparable elements of our consecration.
And then comes an entire section entitled "Sent to the young in communities following Christ". At this point 'community' becomes a structure that allows us to do or make real communion for mission, and to do it in a way that is part of a whole.
The link that unites communion with mission is charism. Salesian community, then, is the practical result of this dynamic communion and mission in the light of Don Bosco's charism.
Given the growth of Don Bosco's charism (and its many vicissitudes as he tried to develop the notion of a community for mission which tried to incorporate a vast movement of peoples, internally, externally committed) we find there are many kinds of Salesian community in a broad sense: religious communities of consecrated men, women, laity, other communities of lay people (e.g. the Community of the Mission of Don Bosco), communities even of religious and lay persons. And because of these diverse kinds of communities with diverse levels of relationship between them we speak of the Salesian Family on the one hand, but also of local, provincial and world level community on the other.
Then there is the ''Educative and Pastoral Community''.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Expect the following terms in Salesian parlance involving //comunità//: //comunità di accoglienza vocazionale// best glossed as 'vocational guidance community'; //Comunità Educative Pastorale CEP// or Educative and Pastoral Community EPC'; //comunità formatrice// or 'formation community'; //comunità locale// or 'local community'.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[community life|vita comune]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' virtual community.
!!!''Definition:'' (if a precise one exists)
RHEINGOLD: social aggregations that emerge from the Internet when enough people carry on public discussions long enough and with sufficient human feeling to form webs of personal relationships in cyberspace.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A possible inventor of this term and one of its first proponents was Howard Rheingold, who created one of the first major Internet communities, called "The Well." In his book, 'The Virtual Community' (1993), Rheingold defines virtual communities as social aggregations that emerge from the Internet when enough people carry on public discussions long enough and with sufficient human feeling to form webs of personal relationships in cyberspace.
!!!''Usage notes''
'virtual community' is what is known as a blend, a new word whose meanings combine the original meanings of its component words, virtual + community.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[social communication|comunicazione sociale]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' Confederation of the Past Pupils of Don Bosco.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Refer to other links for additional information.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[oratory|oratorio]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' (Adjunct) Conference of St Vincent de Paul.
!!!''Definition:'' (if a precise one exists)
The Conferences of St. Vincent de Paul were founded in Paris in 1833 by Antoine Frédéric Ozanam and seven companions, and were first established in Turin on May 13, 1850, with Count Carlo Cays of Gilette and Caselette (later a Salesian and a priest) as director. In the summer of 1854 the cholera epidemic reached its high point in Turin, and was particularly devastating in the Borgo Dora district. On this occasion volunteers from the Company of St. Aloysius and a group of boarders from the Casa Annessa (John Cagliero among them!) joined forces with the local Conference of St. Vincent de Paul in caring for the victims of the epidemic. It was a magnificent demonstration of Christian charity and a revelation of what young people could accomplish.(Lenti, //Don Bosco: History and Spirit// Vol 3)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In 1857 the “Adjunct” Conference of St. Vincent de Paul absorbed the Mutual Benefit Society, as it also later incorporated within its structure the Conference of St. Francis de Sales that had been started in 1854.
It should be noted that Don Bosco wanted the Conferences of St Vincent de Paul established in all his oratories (where they absorbed or united forces with local charitable action groups). The official Organization of the Conferences supported Don Bosco’s work generously everywhere
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Mutual Aid Society|Società di Mutuo Soccorso]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' provincial conference.
!!!''Definition:'' (if a precise one exists)
A group of provinces (term adopted first at the 19th GC).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[region|Regione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Conferences of St Francis de Sales.
!!!''Definition:'' (if a precise one exists)
The term “conference” in the present context (in accordance with Italian usage) is taken to mean an address by a speaker to an assembled group of people, usually followed by a discussion. The plural “conferences” in this connection implies that several such addresses were given, in one or more successive days.
The annual Conferences of St. Francis de Sales were held on or around the feast of St. Francis de Sales (January 29 in those days). Should the feast be shifted to the next Sunday or to some other day, the Conferences would be scheduled accordingly. Occasionally, the Conferences were delayed, even for months, to allow Don Bosco to be present. (Lenti, //Don Bosco: History and Spirit// Vol 7)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Besides the Conferences of St. Francis de Sales, Don Bosco also held general conferences in the autumn (“Fall Conferences,” at the time of the spiritual retreats) and even at other times during the year. But few of these latter general conferences have been recorded.
The yearly Conferences of St. Francis de Sales were attended by the confreres of the Oratory at Valdocco, and by the directors of the other houses. Obviously, directors of far-away houses (e.g. South America, after 1875) could not usually be present.
The first Conference of St. Francis de Sales took place in 1865, when the Society only had two schools outside Turin. No further conferences were held after 1879.
!!!''Usage notes''
''Alert!'': do not confuse the annual St Francis de Sales Conferences with the [[Conference of St Francis de Sales|Conferenza di San Francesco di Sales]].
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' confrere.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Chi è ascritto a una confraternita: i c. della Misericordia; usato spec. come appellativo reciproco (anche di religiosi): i miei c., un nostro c.// A member of a confraternity ... also used by religious.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The English term 'confrere' (plural 'confreres') has been anglicised from the French, without accents, and is used in connection with brothers in religious life. The female gender works easily enough in Italian (//consorelle//) but not so easily in English, where a circumlocution is preferred.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' (Youth) gathering/contest (in context) international contest ... team championships, two teams ... also figuratively
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Nel linguaggio sport., gara, competizione: c. internazionale; c. diretto, in un campionato a squadre, incontro tra due squadre che si trovano, o ambiscono trovarsi, ai primi posti della classifica. b. In senso fig., soprattutto nel linguaggio polit., incontro polemico fra sostenitori di tesi, concezioni, programmi diversi, che si propone non tanto la lotta e la vittoria di una delle parti quanto la possibilità di un’intesa attraverso un dialogo aperto ed equilibrato.// In sports language, competitions we find terms like international contest ... two teams battling it out for victory ... but figuratively it applies to an open and balanced discussion on key ideas.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
We find both meanings as described above from Treccani in Salesian usage. In the first instance the context suggest 'competition' or 'contest', but in the latter context it might well just be 'youth gathering'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Note that generally it is //Confronto// with a capital C, so should likewise be Youth gathering with a capital Y.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[es]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Congregation of the Sisters of the Resurrection.
!!!''Definition:'' (if a precise one exists)
Religious Congregation of Diocesan Right founded in Guatemala by Fr Joseph Puthenpura SDB on 15 September 1977 from a small group of nine volunteers who wished to serve their 'fellow campesinos'.
!!!''Synonyms:''
The Little Community
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Hundreds of young indigenous Guatemalans are happy to bring the Good News of the Gospel from village to village, even if 90% of the people are illiterate. The girls wanted to do similarly. With the arrival of the Daughters of Charity this became a possibility. On 15th September 1977 nine “volunteers” who were living with the Sisters, led by Fr Jorge Puthenpura began an experience of community life with a view to forming a stable group, in an independent house. The previous May, the Salesian Provincial, Fr Ricardo Chinchilla, made the unexpected proposal that they be organised as an indigenous religious community, showing them the procedures and offering them the means. This was an act of Providence! On 31st January 1980 three young people from the group expressed the desire to form a “little community” with a view to serving their fellow 'campesinos'. On 31st January 1987 the community was approved by Bishop Gerardo Flores Reyes. Luisa Che became the first superior. The bishop regularised the vows of 14 Sisters and admitted the first three to perpetual vows. Two Houses of the Community were recognised. The “Talita Kumi” centre would become the most significant work of the Congregation. The Little Community is truly an inculturated one: all members are indigenous, even if this is not a statutory requirement. To begin with most of them were illiterate, but that did not stop them from handing on a deep and heartfelt cultural wealth. Their apostolate is to inculturate the Gospel and help their poorest brothers and sisters through catechetics and development, especially for young girls and women, through literacy, health education, family life, domestic finance, small farming and commercial farming with small mini-credit cooperatives etc. A totally new experience with a meaningful motto: “Christ is risen, let us also rise with Him”. The Paschal candle is a symbol of the Community.
Date admitted to the SF: 16th July 2004 [Decree 31st January 2006]
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' gathered members
!!!''Definition:'' (if a precise one exists)
Viganò ACG304: Don Bosco indicated that the //congregati// included: workers, cooperators, collaborators, benefactors.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
It is obvious that this term had very extensive boundaries for Don Bosco, going beyond the consecrated Religious in his houses.
!!!''Usage notes''
The term is now only of historical interest.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[associati]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' congregation.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //largamente nell’uso, è stata sostituita con quella di Istituto di vita consacrata). Congregazioni romane, organi di governo della Santa Sede ... // In broad use but now refers mainly to Institutes of Consecrated Life (Congregation with a capital C), religious with simple vows (as distinct from Orders with solemn vows).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term also has a different reference historically. For Don Bosco, his 'congregation', at least in the 1850's, was the first suggested meaning, i.e. an association of Christians united with him for the good of the youth of the Oratory.
It is also interesting to note that the term 'congregation' in the Restoration schools could mean a gathering of students on Sunday and Holy Days for religious activities. Don Bosco makes references to such 'congregations' in the //Memoirs of the Oratory// when talking about his own schooling in Chieri.
Don Bosco began to refer to his congregation initially as a 'kind of congregation' and was unsure what to call its members. He used various terms: allies, associates, benefactors, promoters, cooperators, and these were not gender-exclusive terms, a reality that would give him some difficulty in dealing with Rome.
The 'Congregation of St Francis de Sales' pre-dates the 'Salesian Society' which dates its formal existence to the evening of December 18, 1859. The former might be traced back as far as 1841 in general terms but received ecclesiastical approval by a Decree (Archbishop Fransoni) of 1852. It was a mixed group, a congregation of cooperators.
We can say, then, that the 'Congregation of St Francis de Sales' becomes divided into two families in 1859: one bound by vows and living in community (The Salesian Society) and the other, still known as Union or Congregation of St Francis de Sales, Promoters or Cooperators) as an extern group.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Society|Società Salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' consecration.
!!!''Definition:'' (if a precise one exists)
(1) The act of dedicating something to the divine (church, chapel)
(2) God's initiative, through the ministry of the Church, in dedicating someone to His service
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In its broadest and almost non-religious sense, 'consecration' means that something is destined for a certain use. In its religious understanding, it used usually be seen as a human act - so Fr Rua, for example, established the 'consecration' of the Society to the [[Sacred Heart|Sacro Cuore]] at the beginning of the 20th century.
Salesians for many years referred to the 'act of consecration to Mary Help of Christians', which had its origins in the final year of the First World War when the then Rector Major, Fr Albera, consecrated Don Bosco's Work to Mary Help of Christians on the 50th anniversary of the opening of the Church (now Basilica) of Mary Help of Christians in Valdocco, Turin.
In 1980 the wording of this prayer, recited daily after meditation around the Salesian world, was changed to "we entrust ourselves completely to you' instead of 'we consecrate ...'. This reflects a change particularly after Vatican II, which recognises that it is God who consecrates. Fr Viganò pointed this out in 1992 when he explained how Vatican II reversed our understanding of 'consecrated life' emphasising that it is God who does the consecrating. In //Lumen Gentium// no.44 we find the passive verb //consecratur// suggesting that we are consecrated (by God). This consecration by God of certain people is not sacramental but a 'special blessing', Fr Viganò says, as we find in the Ritual for Profession, one that ensures a special gift and the assistance of the Holy Spirit.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
For us, the term 'consecration' emphasises especially God's initiative. (ACG 352 1995)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[entrustment|affidamento]].//
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Consecrated Life Vocabulary</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<meta content="Org-mode" name="generator" />
<meta content="2011-08-19 09:19:35 CEST" name="generated" />
<meta content="jbfox" name="author" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
html { font-family: Times, serif; font-size: 12pt; }
.title { text-align: center; }
.todo { color: red; }
.done { color: green; }
.tag { background-color:lightblue; font-weight:normal }
.target { }
.timestamp { color: grey }
.timestamp-kwd { color: CadetBlue }
p.verse { margin-left: 3% }
pre {
border: 1pt solid #AEBDCC;
background-color: #F3F5F7;
padding: 5pt;
font-family: courier, monospace;
font-size: 90%;
overflow:auto;
}
table { border-collapse: collapse; }
td, th { vertical-align: top; }
dt { font-weight: bold; }
div.figure { padding: 0.5em; }
div.figure p { text-align: center; }
.linenr { font-size:smaller }
.code-highlighted {background-color:#ffff00;}
.org-info-js_info-navigation { border-style:none; }
#org-info-js_console-label { font-size:10px; font-weight:bold;
white-space:nowrap; }
.org-info-js_search-highlight {background-color:#ffff00; color:#000000;
font-weight:bold; }
/*]]>*/-->
</style>
<script type="text/javascript">
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*/-->
</script>
</head>
<body>
<h1 class="title">Consecrated Life Vocabulary</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#sec-1">1 Abstract </a></li>
<li><a href="#sec-2">2 Other formats: RDF/XML | JSON | Turtle
</a></li>
<li><a href="#sec-3">3 History </a></li>
<li><a href="#sec-4">4 Namespace </a></li>
<li><a href="#sec-5">5 Status of this Document </a></li>
<li><a href="#sec-6">6 Ideas, questions </a></li>
<li><a href="#sec-7">7 Other helpful material </a></li>
<li><a href="#sec-8">8 Term Summary </a>
<ul>
<li><a href="#sec-8.1">8.1 An alphabetical list of all
terms defined in this schema. </a></li>
</ul>
</li>
<li><a href="#sec-9">9 Classes and Properties </a>
<ul>
<li><a href="#sec-9.1">9.1 Classes </a>
<ul>
<li><a href="#sec-9.1.1">9.1.1 Church </a></li>
<li><a href="#sec-9.1.2">9.1.2 ConsecratedState </a></li>
<li><a href="#sec-9.1.3">9.1.3 SacredBond </a></li>
<li><a href="#sec-9.1.4">9.1.4 EvangelicalCounsel </a></li>
<li><a href="#sec-9.1.5">9.1.5 Institute </a></li>
<li><a href="#sec-9.1.6">9.1.6 Charism </a></li>
<li><a href="#sec-9.1.7">9.1.7 Spirituality </a></li>
<li><a href="#sec-9.1.8">9.1.8 Mission </a></li>
<li><a href="#sec-9.1.9">9.1.9 ReligiousFamily </a></li>
<li><a href="#sec-9.1.10">9.1.10 ServiceOfAuthority </a></li>
<li><a href="#sec-9.1.11">9.1.11 UniversalLaw </a></li>
<li><a href="#sec-9.1.12">9.1.12 ProperLaw </a></li>
<li><a href="#sec-9.1.13">9.1.13 Formation </a></li>
<li><a href="#sec-9.1.14">9.1.14 ConsecratedPerson </a></li>
<li><a href="#sec-9.1.15">9.1.15 Membership </a></li>
<li><a href="#sec-9.1.16">9.1.16 Circumscription </a></li>
<li><a href="#sec-9.1.17">9.1.17 FraternalCommunion </a></li>
<li><a href="#sec-9.1.18">9.1.18 CommonLife </a></li>
<li><a href="#sec-9.1.19">9.1.19 House </a></li>
<li><a href="#sec-9.1.20">9.1.20 ApostolicWork </a></li>
<li><a href="#sec-9.1.21">9.1.21 Assembly </a></li>
<li><a href="#sec-9.1.22">9.1.22 Sector </a></li>
<li><a href="#sec-9.1.23">9.1.23 TemporalGoods </a></li>
<li><a href="#sec-9.1.24">9.1.24 Discipline </a></li>
<li><a href="#sec-9.1.25">9.1.25 Vocation </a></li>
<li><a href="#sec-9.1.26">9.1.26 Dimension </a></li>
<li><a href="#sec-9.1.27">9.1.27 Patrimony </a></li>
</ul>
</li>
<li><a href="#sec-9.2">9.2 Properties </a>
<ul>
<li><a href="#sec-9.2.1">9.2.1 prefTitle </a></li>
<li><a href="#sec-9.2.2">9.2.2 altTitle </a></li>
<li><a href="#sec-9.2.3">9.2.3 founder </a></li>
<li><a href="#sec-9.2.4">9.2.4 superior </a></li>
<li><a href="#sec-9.2.5">9.2.5 honorificPrefix </a></li>
<li><a href="#sec-9.2.6">9.2.6 designatorySuffix </a></li>
<li><a href="#sec-9.2.7">9.2.7 saintlyPrefix </a></li>
<li><a href="#sec-9.2.8">9.2.8 public </a></li>
<li><a href="#sec-9.2.9">9.2.9 clerical </a></li>
<li><a href="#sec-9.2.10">9.2.10 lay </a></li>
<li><a href="#sec-9.2.11">9.2.11 pontificalRight </a></li>
<li><a href="#sec-9.2.12">9.2.12 diocesanRight </a></li>
<li><a href="#sec-9.2.13">9.2.13 gender </a></li>
<li><a href="#sec-9.2.14">9.2.14 separatedFromWorld </a></li>
<li><a href="#sec-9.2.15">9.2.15 livingInWorld </a></li>
<li><a href="#sec-9.2.16">9.2.16 memberOf </a></li>
<li><a href="#sec-9.2.17">9.2.17 governedBy </a></li>
<li><a href="#sec-9.2.18">9.2.18 professed </a></li>
<li><a href="#sec-9.2.19">9.2.19 temporaryVows </a></li>
<li><a href="#sec-9.2.20">9.2.20 perpetualVows </a></li>
<li><a href="#sec-9.2.21">9.2.21 simpleVows </a></li>
<li><a href="#sec-9.2.22">9.2.22 solemnVows </a></li>
<li><a href="#sec-9.2.23">9.2.23 formativePhase </a></li>
<li><a href="#sec-9.2.24">9.2.24 contemplative </a></li>
<li><a href="#sec-9.2.25">9.2.25 apostolic </a></li>
<li><a href="#sec-9.2.26">9.2.26 admitted </a></li>
<li><a href="#sec-9.2.27">9.2.27 separated </a></li>
<li><a href="#sec-9.2.28">9.2.28 deceased </a></li>
<li><a href="#sec-9.2.29">9.2.29 saintlyCause </a></li>
<li><a href="#sec-9.2.30">9.2.30 location </a></li>
<li><a href="#sec-9.2.31">9.2.31 departmentOf </a></li>
<li><a href="#sec-9.2.32">9.2.32 sponsorship </a></li>
<li><a href="#sec-9.2.33">9.2.33 hasDepartment </a></li>
<li><a href="#sec-9.2.34">9.2.34 linkedTo </a></li>
<li><a href="#sec-9.2.35">9.2.35 siteAddress </a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="outline-2" id="outline-container-1">
<h2 id="sec-1">1 Abstract </h2>
<div id="text-1">
<p><i>Consecrated Life Vocabulary</i>: a vocabulary for
describing consecrated life groups in the Roman Catholic
Church, but which may also describe aspects of consecrated
life groups in Sister Churches. This document is on the way to
being a full-blown ontology of Consecrated Life, but at this
early stage would be better described as a 'vocabulary' and is
in fact largely presented in terms of the Simple Knowledge
Organization System or SKOS, which allows for simpler
semantics and more complete human readable information. The
division into 'classes' and 'properties' does not belong to
the SKOS model, but it is made here to indicate that we wish
to eventually model this vocabulary as an ontology. There are
also occasional references to properties belonging to the RDF
Schema form of modelling (e.g. rdfs:seeAlso).
</p>
<p>
There is an essential difference between a simple taxonomy or
dictionary of terms, and a 'vocabulary' which is at least
heading in the direction of being an ontology. The former
would be a simple list of terms. The latter seeks concepts,
rather than terms.
</p>
<p>
One of the recommendations for creating semantic web
vocabularies is to re-use existing vocabularies or at least
some terms from them where possible. It is not so easy to
accomplish this in the current instance since many of the
categories in this domain are markedly distinct from existing
category definitions, many of which have to do with commercial
interests or organizational factors alone, or may otherwise be
too generic. Nevertheless it is possible to associate some
classes and properties with existing classes and properties
defined elsewhere.
</p>
<p>
It is also assumed that particular consecrated life groups may
wish to develop a vocabulary based on this one, thus extending
certain classes and adding additional properties as required.
</p>
</div>
</div>
<div class="outline-2" id="outline-container-2">
<h2 id="sec-2">2 Other formats: RDF/XML | JSON | Turtle </h2>
<div id="text-2">
<p><a href="http://www.sdb.org/vocabulary/clv.rdf">RDF/XML</a> <a
href="http://www.sdb.org/vocabulary/clv.json">JSON</a> <a href="http://www.sdb.org/vocabulary/clv.ttl">Turtle</a>
</p>
</div>
</div>
<div class="outline-2" id="outline-container-3">
<h2 id="sec-3">3 History </h2>
<div id="text-3">
<p>This Version:
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#">http://www.sdb.org/vocabulary/ConsecratedLife#</a>
Latest Version:
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#">http://www.sdb.org/vocabulary/ConsecratedLife#</a>
Previous Version: now completely deprecated and no longer
available. it was simply a 'toe in the water' at the time!
</p>
</div>
</div>
<div class="outline-2" id="outline-container-4">
<h2 id="sec-4">4 Namespace </h2>
<div id="text-4">
<p>The URI for this vocabulary is: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#">http://www.sdb.org/vocabulary/ConsecratedLife#</a>
</p>
<p>
When abbreviating terms the suggested prefix is <i>clv</i>.
</p>
<p>
Editors:
Salesian Social Communications Department: <a href="mailto:admin@sdb.org">mailto:admin@sdb.org</a>
Contributor:
Julian Fox sdb
</p>
</div>
</div>
<div class="outline-2" id="outline-container-5">
<h2 id="sec-5">5 Status of this Document </h2>
<div id="text-5">
<p>This document is open for review by webmasters and other
interested parties from consecrated life groups (Orders,
Congregations, Secular Institutes, Societies of Apostolic
Life, other groups or individuals recognised as 'consecrated'
by the Church's authority and including Public Associations of
the Faithful pursuing such recognition). The objective is to
enhance the witness and effectiveness of websites belonging to
such groups in the overall context of the Web, by promoting
open data where it is possible and desirable to do so and the
means to link such data. This approach can enhance
interoperability in many instances where it is particularly
desirable, e.g. linking data amongst not-for-profit
organizations and activities managed by and/or in the name of
consecrated life groups
</p>
<p>
This is one document in a set of several yet to come, with a
view to helping webmasters. Other documents will be found in
this same namespace and will provide explanation of the
semantic web, the advantages of linked data for consecrated
life groups, and how to go about it.
</p>
<p>
The intended public is invited to send comments to <a href="mailto:admin@sdb.org">mailto:admin@sdb.org</a>
</p>
<p>
This section describes the status of this document at the time
of its publication. Other documents may supersede this
document.
</p>
</div>
</div>
<div class="outline-2" id="outline-container-6">
<h2 id="sec-6">6 Ideas, questions </h2>
<div id="text-6">
<p>This vocabulary by no means pretends to be complete, so it
would be helpful to receive ideas as to how to develop it
further, bearing in mind the difference stated earlier between
a simple dictionary list of terms, and a vocabulary which is
more at the level of the essential concepts to be covered.
</p>
<p>
Do we need a core for the institutional aspect and another
core for persons? </p>
<p>
FOAF offers a some classes and properties that we could
employ: <i>Agent</i> (things that do stuff) as a superclass
for the 'doing' part of consecrated life,maybe, but we also
need something for the 'being' part, currently presented as <i>ConsecratedState</i>.
<i>Person</i>, <i>Organization</i>, <i>Group</i> are all
FOAF possibilities; <i>title</i>, <i>member</i> are property
possibilities, though covered below by others such as <i>honorificPrefix</i>
and <i>member</i> from the W3C set. Core Organization
Ontology.
</p>
</div>
</div>
<div class="outline-2" id="outline-container-7">
<h2 id="sec-7">7 Other helpful material </h2>
<div id="text-7">
<p>A useful glossary of terms on 'Religious Life' has been
compiled on the basis of Fr John Hardon's <i>Modern Catholic
Dictionary</i>, and can be found at <a href="http://www.religiouslife.com/glossary.html">http://www.religiouslife.com/glossary.html</a>.
</p>
<p>
The Salesians of Don Bosco have begun to develop a term base
along semantic web lines, as an initial step in this
direction. It can be found at <a href="http://www.sdb.org/pmwiki/pmwiki.php">http://www.sdb.org/pmwiki/pmwiki.php</a>.
</p>
</div>
</div>
<div class="outline-2" id="outline-container-8">
<h2 id="sec-8">8 Term Summary </h2>
<div id="text-8">
</div>
<div class="outline-3" id="outline-container-8.1">
<h3 id="sec-8.1">8.1 An alphabetical list of all terms defined
in this schema. </h3>
<div id="text-8.1">
<p><a href="#sec-9.2.26">admitted</a> <a href="#sec-9.2.2">alternative
title</a> <a href="#sec-9.2.25">apostolic</a> <a href="#sec-9.1.21">Assembly</a>
<a href="#sec-9.1.6">Charism</a> <a href="#sec-9.1.1">Church</a>
<a href="#sec-9.1.16">Circumscription</a> <a href="#sec-9.2.9">clerical</a>
<a href="#sec-9.1.18">Common Life</a> <a href="#sec-9.1.14">Consecrated
Person</a> <a href="#sec-9.1.2">Consecrated State</a> <a
href="#sec-9.2.24">contemplative</a> <a href="#sec-9.2.28">deceased</a>
<a href="#sec-9.2.31">department of</a> <a href="#sec-9.2.6">designatory
prefix</a> <a href="#sec-9.1.26">Dimension</a> <a href="#sec-9.1.24">Discipline</a>
<a href="#sec-9.1.4">Evangelical Counsel</a> <a href="#sec-9.1.13">Formation</a>
<a href="#sec-9.2.23">formative phase</a> <a href="#sec-9.2.3">founder</a>
<a href="#sec-9.1.17">Fraternal Communion</a> <a href="#sec-9.2.17">governed
by</a> <a href="#sec-9.2.33">has department</a> <a href="#sec-9.2.5">honorific
prefix</a> <a href="#sec-9.1.19">House</a> <a href="#sec-9.1.5">Institute</a>
<a href="#sec-9.2.34">linked to</a> <a href="#sec-9.2.16">member
of</a> <a href="#sec-9.2.30">location</a> <a href="#sec-9.1.15">Membership</a>
<a href="#sec-9.1.8">Mission</a> <a href="#sec-9.2.20">perpetual
vows</a> <a href="#sec-9.2.1">preferred title</a> <a href="#sec-9.2.18">professed</a>
<a href="#sec-9.1.12">Proper Law</a> <a href="#sec-9.2.8">public</a>
<a href="#sec-9.1.9">Religious Family</a> <a href="#sec-9.1.3">Sacred
Bond</a> <a href="#sec-9.2.29">saintly cause</a> <a href="#sec-9.2.7">saintly
prefix</a> <a href="#sec-9.1.22">Sector</a> <a href="#sec-9.1.10">Service
of Authority</a> <a href="#sec-9.2.21">simple vows</a> <a
href="#sec-9.2.35">site address</a> <a href="#sec-9.2.22">solemn
vows</a> <a href="#sec-9.2.32">sponsorship</a> <a href="#sec-9.1.7">Spirituality</a>
<a href="#sec-9.2.4">superior</a> <a href="#sec-9.1.23">Temporal
Goods</a> <a href="#sec-9.2.19">temporary vows</a> <a href="#sec-8.1">Tradition</a>
<a href="#sec-9.1.11">Universal Law</a> <a href="#sec-9.1.25">Vocation</a>
</p>
</div>
</div>
</div>
<div class="outline-2" id="outline-container-9">
<h2 id="sec-9">9 Classes and Properties </h2>
<div id="text-9">
</div>
<div class="outline-3" id="outline-container-9.1">
<h3 id="sec-9.1">9.1 Classes </h3>
<div id="text-9.1">
</div>
<div class="outline-4" id="outline-container-9.1.1">
<h4 id="sec-9.1.1">9.1.1 <span class="target">Church</span> </h4>
<div id="text-9.1.1">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Church">http://www.sdb.org/vocabulary/ConsecratedLife#Church</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Church
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Church as communion: vertical - from God; horizontal -
extending out to all mankind, and Church's life as a
striving for holiness. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
Since all of consecrated life comes within the ecclesial
(Church) domain, this has to be regarded as a superclass
or top concept in SKOS terms. The Church as organization
might well be handled by existing vocabularies or
ontologies. Where there is something quite specific to
Church which overlaps with the 'communion' dimension
expressed here, it is included in this vocabulary.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.2">
<h4 id="sec-9.1.2">9.1.2 <span class="target">ConsecratedState</span>
</h4>
<div id="text-9.1.2">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#ConsecratedState">http://www.sdb.org/vocabulary/ConsecratedLife#ConsecratedState</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Consecrated state
</p>
<p>
<b>skos:definition</b>
</p>
<p>
The ontological state of being resulting from the
profession of the evangelical counsels in the Church. </p>
<p>
<b>skos:example</b>
Example terms used: Religious, Religious Life, Consecrated
Virgin, Hermit, Eremitical life…
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.1">Church</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.3">
<h4 id="sec-9.1.3">9.1.3 <span class="target">SacredBond</span>
</h4>
<div id="text-9.1.3">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#SacredBond">http://www.sdb.org/vocabulary/ConsecratedLife#SacredBond</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Sacred Bond
</p>
<p>
<b>skos:altLabel</b>
</p>
<p>
Vows
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Vow or at least promise accepted by a superior in the
context of an association approved by the Church. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
This would usually be a consecrated life group, but it is
possible in some instances that the sacred bond is
directly with the Church and accepted by the Bishop (as in
the case, for example of a Consecrated Virgin). </p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.2">Consecrated State</a> </p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.27">Patrimony</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.4">
<h4 id="sec-9.1.4">9.1.4 <span class="target">EvangelicalCounsel</span>
</h4>
<div id="text-9.1.4">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#EvangelicalCounsel">http://www.sdb.org/vocabulary/ConsecratedLife#EvangelicalCounsel</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Evangelical Counsel
</p>
<p>
<b>skos:altLabel</b>
</p>
<p>
Evangelical Counsels
</p>
<p>
<b>skos:definition</b>
</p>
<p>
The Gospel counsels. The consecrated life is constituted
by the profession of the evangelical counsels.
</p>
<p>
<b>skos:noteScope</b>
</p>
<p>
They are more often than not referred to in the plural,
but can be named separately. Although not part of the
Church's hierarchy, the profession of the evangelical
counsels by consecrated persons belongs to the Church's
life and holiness.
</p>
<p>
<b>skos:example</b>
</p>
<p>
Traditionally known as poverty, chastity and obedience.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.1">Church</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.5">
<h4 id="sec-9.1.5">9.1.5 <span class="target">Institute</span>
</h4>
<div id="text-9.1.5">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Institute">http://www.sdb.org/vocabulary/ConsecratedLife#Institute</a>
</p>
<p>
<b>skos:preLabel</b>
</p>
<p>
Institute
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A religious society in which, in accordance with their own
law, the members pronounce public vows and live a
fraternal life in common. </p>
<p>
As an organization, in secular terms, it represents a
collection of people organized together into a community
or other social, commercial or political structure. The
group has some common purpose or reason for existence
which goes beyond the set of people belonging to it and
can act as an Agent. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
skos:altLabel may be added for alternative names (trading
names, colloquial names).
</p>
<p>
<b>skos:broader</b>
</p>
<p>
org:organization
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.6">
<h4 id="sec-9.1.6">9.1.6 <span class="target">Charism</span>
</h4>
<div id="text-9.1.6">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Charism">http://www.sdb.org/vocabulary/ConsecratedLife#Charism</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Charism
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Descriptive of the spiritual orientation and
characteristics specific to a Religious Institute.
Normally understood to be the gifts of the Holy Spirit as
represented in the Founder or Founders and passed on to
the Institute to be preserved and developed. In purely
secular terms this might be understood as the purpose of
the organization.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
skos:Concept; </p>
<p>
<b>skos:broader</b>
</p>
<p>
org:Organization
</p>
<p>
<b>skos:related</b>
</p>
<p>
<a href="#sec-9.1.7">Spirituality</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.7">
<h4 id="sec-9.1.7">9.1.7 <span class="target">Spirituality</span>
</h4>
<div id="text-9.1.7">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Spirituality">http://www.sdb.org/vocabulary/ConsecratedLife#Spirituality</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Spirituality
</p>
<p>
<b>skos:definition</b>
</p>
<p>
To be understood in this context as a particular
spirituality representative of the charism of the
Religious Institute. </p>
<p>
<b>skos:example</b>
</p>
<p>
e.g. <i>Salesian spirituality</i>, <i>Dominican
spiritualtiy</i>.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.27">Patrimony</a> </p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.6">Charism</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.8">
<h4 id="sec-9.1.8">9.1.8 <span class="target">Mission</span>
</h4>
<div id="text-9.1.8">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Mission">http://www.sdb.org/vocabulary/ConsecratedLife#Mission</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Mission
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Mission is of the Spirit, hence a theological concept,
rather than of a particular group (for which we might
speak of charism or spirituality). </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
Mission is a fundamental principle of consecrated life,
not to be confused with 'missions' or 'the missions' which
are specific sectors.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.9">
<h4 id="sec-9.1.9">9.1.9 <span class="target">ReligiousFamily</span>
</h4>
<div id="text-9.1.9">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#ReligiousFamily">http://www.sdb.org/vocabulary/ConsecratedLife#ReligiousFamily</a>
<b>skos:prefLabel</b>
</p>
<p>
Religious Family
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Religious Family is a term that stands for the bond (of
varying strengths) that links groups under the one
charism. It is an institutional expression of an inner,
charismatic and spiritual communion.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.6">Charism</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.10">
<h4 id="sec-9.1.10">9.1.10 <span class="target">ServiceOfAuthority</span>
</h4>
<div id="text-9.1.10">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#ServiceOfAuthority">http://www.sdb.org/vocabulary/ConsecratedLife#ServiceOfAuthority</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Service of Authority
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Service of authority indicates a role a person or other
agent plays in the consecrated life group. Usually a
person is established as a sign of unity and a guide in
discerning God's will, which is the role of the Superior,
or Rector. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
The instances of this class remain in the abstract,
denoting the 'role' of Rector or Superior (or Abbot or…)
rather than the particular instance of this in a community
- for this latter, cf. <a href="#sec-9.2.4">superior</a>.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.11">
<h4 id="sec-9.1.11">9.1.11 <span class="target">UniversalLaw</span>
</h4>
<div id="text-9.1.11">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#UniversalLaw">http://www.sdb.org/vocabulary/ConsecratedLife#UniversalLaw</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Universal Law
</p>
<p>
<b>skos:definition</b>
</p>
<p>
That which is promulgated for the whole Church
</p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
We are interested in the universal law of the Church as it
applies to the consecrated state or to consecrated
persons.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.1">Church</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.12">
<h4 id="sec-9.1.12">9.1.12 <span class="target">ProperLaw</span>
</h4>
<div id="text-9.1.12">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#ProperLaw">http://www.sdb.org/vocabulary/ConsecratedLife#ProperLaw</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Proper Law
</p>
<p>
<b>skos:definition</b>
</p>
<p>
The Proper law defines rules in observance of the
patrimony of the institute composed of the mind and
designs of the founders regarding the nature, purpose,
spirit and character of the institute in keeping with
sound traditions.
</p>
<p>
<b>skos:example</b>
</p>
<p>
The Proper Law of the Institute covers such terms as
'Constitutions', 'Regulations', 'Statutes', 'Chapter
deliberations', 'Directory' etc.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.11">Universal Law</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.13">
<h4 id="sec-9.1.13">9.1.13 <span class="target">Formation</span>
</h4>
<div id="text-9.1.13">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Formation">http://www.sdb.org/vocabulary/ConsecratedLife#Formation</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Formation
</p>
<p>
<b>skos:definition</b>
</p>
<p>
The personal accompaniment of an individual, the stages
reached in the process of personal growth towards
completeness as a human being. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
Includes terms such as 'initial formation', 'ongoing
formation', 'special formation', 'quinquennium' etc.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.27">Patrimony</a> </p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.14">
<h4 id="sec-9.1.14">9.1.14 <span class="target">ConsecratedPerson</span>
</h4>
<div id="text-9.1.14">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#ConsecratedPerson">http://www.sdb.org/vocabulary/ConsecratedLife#ConsecratedPerson</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Consecrated person
</p>
<p>
<b>skos:definition</b>
</p>
<p>
The consecrated person is one who has taken on the
obligations of the evangelical counsels and has made
'profession'.
</p>
<p>
<b>skos:related</b>
</p>
<p>
<a href="#sec-9.1.3">Sacred Bond</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.15">
<h4 id="sec-9.1.15">9.1.15 <span class="target">Membership</span>
</h4>
<div id="text-9.1.15">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Membership">http://www.sdb.org/vocabulary/ConsecratedLife#Membership</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Membership
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Indicates the nature of the Membership of an individual
(e.g. incorporated in an Institute, radical membership of
a Province etc.) or of a group to a Religious Family. In
this latter case there will be varying degrees. For
example a group may have been additionally founded by the
founder, so has a level of membership at the core level,
or it may have been founded by a member of the group the
founder founded, so at a secondary level of Membership of
the Family; or it may have sprung into existence inspired
by the founder's charism, hence a tertiary level of
Membership.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.5">Institute</a>
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.9">Religious Family</a> </p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.16">
<h4 id="sec-9.1.16">9.1.16 <span class="target">Circumscription</span>
</h4>
<div id="text-9.1.16">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Circumscription">http://www.sdb.org/vocabulary/ConsecratedLife#Circumscription</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Circumscription
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A broadly understood delimitation which may be territorial
(as in a province or diocese) or personal (as in a
personal prelature, ordinariate or other).
</p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
In almost every case for consecrated life groups the
notion of ecclesiastical circumscription is that of a
legally constituted extension, normally consisting of more
than one legally constituted house under a duly appointed
superior.
</p>
<p>
<b>skos:example</b>
</p>
<p>
It may be represented by terms such as 'province', 'vice
province', 'district', 'delegation', 'region', 'custody',
'mission', 'conference' or other similar.
</p>
<p>
<b>skos:related</b>
</p>
<p>
<a href="#sec-9.1.5">Institute</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.17">
<h4 id="sec-9.1.17">9.1.17 <span class="target">FraternalCommunion</span>
</h4>
<div id="text-9.1.17">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#FraternalCommunion">http://www.sdb.org/vocabulary/ConsecratedLife#FraternalCommunion</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Fraternal Communion
</p>
<p>
<b>skos:altLabel</b>
</p>
<p>
Community Life
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A dimension of Religious community, which may be expressed
in concrete terms as 'fraternal life' or 'community life'
or similar.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.1">Church</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.18">
<h4 id="sec-9.1.18">9.1.18 <span class="target">CommonLife</span>
</h4>
<div id="text-9.1.18">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#CommonLife">http://www.sdb.org/vocabulary/ConsecratedLife#CommonLife</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Common Life
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A condition of consecrated life in an Institute, in
contrast to private, individual living of the secular
clergy or to the eremetical solitary life. Means living in
community, with submission to a superior and a common
rule, with community of goods such as food, clothing, and
shelter. </p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.5">Institute</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.19">
<h4 id="sec-9.1.19">9.1.19 <span class="target">House</span>
</h4>
<div id="text-9.1.19">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#House">http://www.sdb.org/vocabulary/ConsecratedLife#House</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
House
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A lawfully constituted community under the authority of a
Superior designated by law. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
The term interprets 'lawfully constituted' broadly here to
include a presence set up by due religious authority but
not canonically constituted.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.11">Universal Law</a>
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.5">Institute</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.20">
<h4 id="sec-9.1.20">9.1.20 <span class="target">ApostolicWork</span>
</h4>
<div id="text-9.1.20">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#ApostolicWork">http://www.sdb.org/vocabulary/ConsecratedLife#ApostolicWork</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Apostolic Work
</p>
<p>
<b>skos:definition</b>
</p>
<p>
An Apostolic Work is essentially a work of charity, but it
may take precise concrete and indeed institutional form as
a work of 'education' or 'health care' or other of the
kind. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
It is intended to cover the superior level of designation
(education, health care etc) rather than the more precise
'school' or 'hospital' or similar, or could apply to all
'works'. Where it is a case of a work taking particular
institutional form one could call on an organization
vocabulary.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.5">Institute</a>
</p>
<p>
<b>rdfs:seeAlso</b>
</p>
<p>
<a href="http://schema.org/School">http://schema.org/School</a>
or <a href="http://schema.org/Hospital">http://schema.org/Hospital</a>
or similar
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.21">
<h4 id="sec-9.1.21">9.1.21 <span class="target">Assembly</span>
</h4>
<div id="text-9.1.21">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Assembly">http://www.sdb.org/vocabulary/ConsecratedLife#Assembly</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Assembly
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Any formal moment of gathering in consecrated life (be it
in community at local level, or in a province, or
worldwide, or across different rgoups of consecrated
life…)
</p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
The term covers the full range of religious assembly in
consecrated life.
</p>
<p>
<b>skos:example</b>
</p>
<p>
Examples of instances 'Chapter', 'community assembly'.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.5">Institute</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.22">
<h4 id="sec-9.1.22">9.1.22 <span class="target">Sector</span>
</h4>
<div id="text-9.1.22">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Sector">http://www.sdb.org/vocabulary/ConsecratedLife#Sector</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Sector
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A unit of organization which is of the very nature
(charismatic) of the consecrated life group in question,
so only has full recognition within the context of that
group. It is not a Legal Entity in its own right. Units
can be large and complex containing other units. Groups
may have a variety of names for this kind of unit.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
org:Organization
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.23">
<h4 id="sec-9.1.23">9.1.23 <span class="target">TemporalGoods</span>
</h4>
<div id="text-9.1.23">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#TemporalGoods">http://www.sdb.org/vocabulary/ConsecratedLife#TemporalGoods</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Temporal Goods
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Wordly goods as distinct from spiritual goods.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.24">
<h4 id="sec-9.1.24">9.1.24 <span class="target">Discipline</span>
</h4>
<div id="text-9.1.24">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Discipline">http://www.sdb.org/vocabulary/ConsecratedLife#Discipline</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Discipline
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Refers to the autonomy of a consecrated life group and the
way it preserves it patrimony. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
The term can therefore cover the concept of 'governance'.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.12">Proper Law</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.25">
<h4 id="sec-9.1.25">9.1.25 <span class="target">Vocation</span>
</h4>
<div id="text-9.1.25">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Vocation">http://www.sdb.org/vocabulary/ConsecratedLife#Vocation</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Vocation
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Calling; the fundamental calling is to holiness. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
The term is often applied in the plural, 'vocations',
implying people who are attracted to this form of life, or
in reference to ones 'vocation' or calling (to this or
that other Institute).
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.26">
<h4 id="sec-9.1.26">9.1.26 <span class="target">Dimension</span>
</h4>
<div id="text-9.1.26">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Dimension">http://www.sdb.org/vocabulary/ConsecratedLife#Dimension</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Dimension
</p>
<p>
<b>skos:definition</b>
</p>
<p>
An aspect or an element of the consecrated state. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
May be qualified by terms such as 'prophetic',
'charismatic'.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
<a href="#sec-9.1.2">Consecrated State</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.1.27">
<h4 id="sec-9.1.27">9.1.27 <span class="target">Patrimony</span>
</h4>
<div id="text-9.1.27">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#Patrimony">http://www.sdb.org/vocabulary/ConsecratedLife#Patrimony</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
Patrimony
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Patrimony is an extensive class including such things as
the 'intentions of the Founder', the 'spirit' and
'charism' of the Institute, its wholesome 'traditions',
the 'Constitutions' and other 'norms', 'discipline',
'incorporation', 'formation' and proper object of the
'sacred bond'.
</p>
</div>
</div>
</div>
<div class="outline-3" id="outline-container-9.2">
<h3 id="sec-9.2">9.2 Properties </h3>
<div id="text-9.2">
</div>
<div class="outline-4" id="outline-container-9.2.1">
<h4 id="sec-9.2.1">9.2.1 <span class="target">prefTitle</span>
</h4>
<div id="text-9.2.1">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#prefTitle">http://www.sdb.org/vocabulary/ConsecratedLife#prefTitle</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
preferred title
</p>
<p>
<b>skos:definition</b>
</p>
<p>
The primary name or title (e.g. legally recognized name or
title) for a consecrated life group. </p>
<p>
<b>skos:example</b>
</p>
<p>
An example is 'Society of St Francis de Sales' or
'Salesian Society' as formal titles where instead
'Salesians' or 'Salesians of Don Bosco' are in fact
alternative labels.
</p>
<p>
<b>skos:broader</b>
sub-property of rdfs:label
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.2">
<h4 id="sec-9.2.2">9.2.2 <span class="target">altTitle</span>
</h4>
<div id="text-9.2.2">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#altTitle">http://www.sdb.org/vocabulary/ConsecratedLife#altTitle</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
alternative title
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Alternative name, perhaps a colloquial name, for a
consecrated life group. </p>
<p>
<b>skos:example</b>
</p>
<p>
An example could be 'Salesians of Don Bosco' as an
alternative to the formal 'Society of St Francis de
Sales'. In this case the alternative label is the more
widely known one.
</p>
<p>
<b>skos:broader</b>
sub-property of rdfs:label
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.3">
<h4 id="sec-9.2.3">9.2.3 <span class="target">founder</span>
</h4>
<div id="text-9.2.3">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#founder">http://www.sdb.org/vocabulary/ConsecratedLife#founder</a>
</p>
<p>
<b>skos:prefLabel</b>
founder
</p>
<p>
<b>skos:definition</b>
Person who has founded or established a group.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.4">
<h4 id="sec-9.2.4">9.2.4 <span class="target">superior</span>
</h4>
<div id="text-9.2.4">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#superior">http://www.sdb.org/vocabulary/ConsecratedLife#superior</a>
</p>
<p>
<b>skos:prefLabel</b>
superior
</p>
<p>
<b>skos:definition</b>
The superior is a role of organizing life for the good of
the the institute and its members according to the
vocation. It is a pastoral service limited by law. Leader
of a community or indeed of a group. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
Intended to cover a wide range of concrete situations
within the Service of Authority, from the 'Major Superior'
('Provincial', 'Abbot', 'Moderator', 'Coordinator' or
other designation or one who stands in their stead) to a
local superior (again covering a wide variety of possible
designations).
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.5">
<h4 id="sec-9.2.5">9.2.5 <span class="target">honorificPrefix</span>
</h4>
<div id="text-9.2.5">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#honorificPrefix">http://www.sdb.org/vocabulary/ConsecratedLife#honorificPrefix</a>
</p>
<p>
<b>skos:prefLabel</b>
honorific prefix
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Complete term or abbreviated version of a variety of forms
of address for persons used in the Church and consecrated
life. </p>
<p>
<b>skos:example</b>
</p>
<p>
Father (Fr), Brother (Br, Bro.), Sister (Sr), Abbot,
Mother are some examples.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.6">
<h4 id="sec-9.2.6">9.2.6 <span class="target">designatorySuffix</span>
</h4>
<div id="text-9.2.6">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#designatoryPrefix">http://www.sdb.org/vocabulary/ConsecratedLife#designatoryPrefix</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
designatory prefix
</p>
<p>
<b>skos:definition</b>
</p>
<p>
The initials that usually follow the name of a person who
is a member of a consecrated life group: sdb, sj, op etc.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.7">
<h4 id="sec-9.2.7">9.2.7 <span class="target">saintlyPrefix</span>
</h4>
<div id="text-9.2.7">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#saintlyPrefix">http://www.sdb.org/vocabulary/ConsecratedLife#saintlyPrefix</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
saintly prefix
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Candidates for canonisation will be called one of 'Servant
of God' (not abbreviated), Venerable (Ven.), Blessed
(Bl.), Saint (st).
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.8">
<h4 id="sec-9.2.8">9.2.8 <span class="target">public</span> </h4>
<div id="text-9.2.8">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#public">http://www.sdb.org/vocabulary/ConsecratedLife#public</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
public
</p>
<p>
<b>skos:definition</b>
</p>
<p>
In reference to profession, which is by nature 'public',
that is made into the hands of one who receives the
profession of the evangelical counsels in the name of the
Church.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.9">
<h4 id="sec-9.2.9">9.2.9 <span class="target">clerical</span>
</h4>
<div id="text-9.2.9">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#clerical">http://www.sdb.org/vocabulary/ConsecratedLife#clerical</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
clerical
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Used in relation to Religious Institutes which exercise
sacred orders by tradition and therefore are governed by a
cleric. May also be applied to a person who exercises a
role associated with Sacred Orders or is at least a
candidate for such.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.10">
<h4 id="sec-9.2.10">9.2.10 <span class="target">lay</span> </h4>
<div id="text-9.2.10">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#lay">http://www.sdb.org/vocabulary/ConsecratedLife#lay</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
lay
</p>
<p>
<b>skos:definition</b>
</p>
<p>
In reference to a Religious Institute that by tradition
does not include the exercise of Sacred Orders. May also
be applied to a person who is not ordained or is not a
candidate for ordination.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.11">
<h4 id="sec-9.2.11">9.2.11 <span class="target">pontificalRight</span>
</h4>
<div id="text-9.2.11">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#pontificalRight">http://www.sdb.org/vocabulary/ConsecratedLife#pontificalRight</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
of pontifical right
</p>
<p>
<b>skos:definition</b>
</p>
<p>
An Institute established by authority of the Holy See.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.12">
<h4 id="sec-9.2.12">9.2.12 <span class="target">diocesanRight</span>
</h4>
<div id="text-9.2.12">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#diocesanRight">http://www.sdb.org/vocabulary/ConsecratedLife#diocesanRight</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
of diocesan right
</p>
<p>
<b>skos:definition</b>
</p>
<p>
An Institute established by authority of a Diocesan
Bishop.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.13">
<h4 id="sec-9.2.13">9.2.13 <span class="target">gender</span>
</h4>
<div id="text-9.2.13">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#gender">http://www.sdb.org/vocabulary/ConsecratedLife#gender</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
gender
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A property of the majority of groups of consecrated life
(some newer forms include male and female members). </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
While it may seem politically incorrect to some in today's
context the fact is there are male and female Institutes.
FOAF gender applies only to person not to groups.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.14">
<h4 id="sec-9.2.14">9.2.14 <span class="target">separatedFromWorld</span>
</h4>
<div id="text-9.2.14">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#separatedFromWorld">http://www.sdb.org/vocabulary/ConsecratedLife#separatedFromWorld</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
separated from the world
</p>
<p>
<b>skos:definition</b>
</p>
<p>
The most well-known form of consecrated life is that of
religious institutes, which are characterized by the
public profession of vows, life in common as brothers or
sisters, and separation from the world.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.15">
<h4 id="sec-9.2.15">9.2.15 <span class="target">livingInWorld</span>
</h4>
<div id="text-9.2.15">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#livingInWorld">http://www.sdb.org/vocabulary/ConsecratedLife#livingInWorld</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
living in the world
</p>
<p>
<b>skos:definition</b>
</p>
<p>
In a secular institute, the faithful live in the world and
work for its sanctification from within. They are a
"leaven in the world," trying to order temporal things
according to God's plan. They commit themselves to the
evangelical counsels and to a fellowship appropriate to
their "particular secular way of life" (Canon 713).
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.16">
<h4 id="sec-9.2.16">9.2.16 <span class="target">memberOf</span>
</h4>
<div id="text-9.2.16">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#memberOf">http://www.sdb.org/vocabulary/ConsecratedLife#memberOf</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
member of
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Indicates that a <b>person</b> or <b>group</b> is a
member though with no indication of the nature of that
membership or the role played. Note that the choice of
property name is not meant to limit the property to only
formal membership arrangements.
</p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
It is also intended to cover related concepts such as
affiliation or other involvement in the group. Extensions
can specialize this relationship to indicate particular
roles within the group or more nuanced relationships to
the group.
</p>
<p>
<b>skos:broader</b>
</p>
<p>
Sub property of foaf:Agent -> org:Organization
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.17">
<h4 id="sec-9.2.17">9.2.17 <span class="target">governedBy</span>
</h4>
<div id="text-9.2.17">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#governedBy">http://www.sdb.org/vocabulary/ConsecratedLife#governedBy</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
governed by
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A property of the service of authority
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.18">
<h4 id="sec-9.2.18">9.2.18 <span class="target">professed</span>
</h4>
<div id="text-9.2.18">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#professed">http://www.sdb.org/vocabulary/ConsecratedLife#professed</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
professed
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Those persons in a religious community who have been
admitted to the vows of poverty, chastity and obedience. </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
In some groups the term is reserved for those religious
who have lived in their communities for a definite period
of time after the taking of vows. The term may also apply
exclusively to those who have taken final vows. But
generally they are said to be “finally professed,” as
distinct from those who are “temporarily professed” or
“first professed” or “junior professed.”
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.19">
<h4 id="sec-9.2.19">9.2.19 <span class="target">temporaryVows</span>
</h4>
<div id="text-9.2.19">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#temporaryVows">http://www.sdb.org/vocabulary/ConsecratedLife#temporaryVows</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
temporary vows
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A commitment made to God to practice poverty, chastity or
some other virtue for a specified length in time. They are
canonically temporary, so that after they expire the one
who made them is free to live the institute of Christian
perfection. But intentionally, even the person who takes
only temporary vows should have the desire to persevere in
the vowed commitment until death
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.20">
<h4 id="sec-9.2.20">9.2.20 <span class="target">perpetualVows</span>
</h4>
<div id="text-9.2.20">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#perpetualVows">http://www.sdb.org/vocabulary/ConsecratedLife#perpetualVows</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
perpetual vows
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Ordinarily the final vows a person takes in an institute
of Christian perfection, mainly poverty, chastity and
obedience. Other vows may be added, according to the
constitutions of the institute.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.21">
<h4 id="sec-9.2.21">9.2.21 <span class="target">simpleVows</span>
</h4>
<div id="text-9.2.21">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#simpleVows">http://www.sdb.org/vocabulary/ConsecratedLife#simpleVows</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
simple vows
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Every vow, whether private or public, that is not
expressly acknowledged by the Church as solemn
</p>
<p>
<b>skos:historyNote</b>
</p>
<p>
The term came into use with the Church's recognition that
religious congregations are authentic institutes of
Christian perfection, as distinct from religious orders.
Simple vows render actions committed against the vows
illicit, unlike solemn vows that make such actions
invalid. </p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.22">
<h4 id="sec-9.2.22">9.2.22 <span class="target">solemnVows</span>
</h4>
<div id="text-9.2.22">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#solemnVows">http://www.sdb.org/vocabulary/ConsecratedLife#solemnVows</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
solemn vows
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Public vows pronounced in a consecrated life group (known
in this case as an 'Order') and recognized as such by the
Church.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.23">
<h4 id="sec-9.2.23">9.2.23 <span class="target">formativePhase</span>
</h4>
<div id="text-9.2.23">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#formativePhase">http://www.sdb.org/vocabulary/ConsecratedLife#formativePhase</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
formative phase
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A defined phase in the formation process, which may
receive various designations, but the most common would
be: 'initial' 'ongoing', 'specific'
</p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
Could involve a pre-phase such as aspirantate or
prenovitiate, then novitiate and postnovitiate or other
phase including special formation, ongoing formation,
quinquennium
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.24">
<h4 id="sec-9.2.24">9.2.24 <span class="target">contemplative</span>
</h4>
<div id="text-9.2.24">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#contemplative">http://www.sdb.org/vocabulary/ConsecratedLife#contemplative</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
contemplative
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Human life insofar as it is occupied with God and things
of the spirit. Compared with the active life, its stresses
prayer and self-denial as a means of growing in the
knowledge and love of God. As a form of consecrated life,
it identifies “institutes which are entirely ordered
towards contemplation, in such wise that their members
give themselves over to God alone in solitude and silence,
in constant prayer and willing penance”.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.25">
<h4 id="sec-9.2.25">9.2.25 <span class="target">apostolic</span>
</h4>
<div id="text-9.2.25">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#apostolic">http://www.sdb.org/vocabulary/ConsecratedLife#apostolic</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
apostolic
</p>
<p>
<b>skos:altLabel</b>
</p>
<p>
active
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A property belonging to consecrated life groups who bring
"anew to their own times the living presence of Jesus, the
Consecrated One par excellence, the One sent by the
Father". In simple terms it means service in a particular
active way by means of works of charity. </p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.26">
<h4 id="sec-9.2.26">9.2.26 <span class="target">admitted</span>
</h4>
<div id="text-9.2.26">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#admitted">http://www.sdb.org/vocabulary/ConsecratedLife#admitted</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
admitted
</p>
<p>
<b>skos:definition</b>
</p>
<p>
According to conditions laid down by Universal Law and
Proper Law pertaining to each Institute, a candidate may
be 'admitted' to novitiate, vows, sacred orders.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.27">
<h4 id="sec-9.2.27">9.2.27 <span class="target">separated</span>
</h4>
<div id="text-9.2.27">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#separated">http://www.sdb.org/vocabulary/ConsecratedLife#separated</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
separated
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A member may leave a consecrated life group by 'transfer'
to another group/Institute, by departure (by consent of
the Major Superior and Council, or by indult), or by
dismissal.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.28">
<h4 id="sec-9.2.28">9.2.28 <span class="target">deceased</span>
</h4>
<div id="text-9.2.28">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#deceased">http://www.sdb.org/vocabulary/ConsecratedLife#deceased</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
deceased
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A deceased member of a consecrated life group who remains
part of the Church understood as communion (the communion
of saints).
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.29">
<h4 id="sec-9.2.29">9.2.29 <span class="target">saintlyCause</span>
</h4>
<div id="text-9.2.29">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#saintlyCause">http://www.sdb.org/vocabulary/ConsecratedLife#saintlyCause</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
saintly cause
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A Cause of canonization is introduced with regard to a
deceased member of a consecrated life group (but not only
- the Cause can be introduced for any deceased member of
the Roman Catholic Church) with a reputation for holiness
and under certain conditions. At an initial stage, if the
Cause is officially recognized, the person will be
declared a 'Servant of God', then 'Venerable', then
'Blessed', then 'Saint' (cf <a href="#sec-9.2.7">saintly
prefix</a>). </p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
This property describes the process rather than the
person.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.30">
<h4 id="sec-9.2.30">9.2.30 <span class="target">location</span>
</h4>
<div id="text-9.2.30">
<p><b>URI</b>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#location">http://www.sdb.org/vocabulary/ConsecratedLife#location</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
location
</p>
<p>
<b>skos:definition</b>
</p>
<p>
The relation between something and the point, or other
geometrical thing in space, where it is. May involve
geolocation coordinates and therefore use of an
appropriate vocabulary such as URI <a href="http://www.w3.org/2003/01/geo/wgs84_pos#location">http://www.w3.org/2003/01/geo/wgs84_pos#location</a>
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.31">
<h4 id="sec-9.2.31">9.2.31 <span class="target">departmentOf</span>
</h4>
<div id="text-9.2.31">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#departmentOf">http://www.sdb.org/vocabulary/ConsecratedLife#departmentOf</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
department of
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Indicates a unit which is a sub-part or child of a <a href="#sec-9.1.22">Sector</a>.
It is organizational in nature rather than charismatic (if
this latter, then it would belong to the class of
Sectors).
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.32">
<h4 id="sec-9.2.32">9.2.32 <span class="target">sponsorship</span>
</h4>
<div id="text-9.2.32">
<p><b>URI</b> <a href="http://www.sdb.org/vocabulary/ConsecratedLife#sponsorship">http://www.sdb.org/vocabulary/ConsecratedLife#sponsorship</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
sponsorship
</p>
<p>
<b>skos:definition</b>
</p>
<p>
A reservation of canonical control by the juridic person
that founded and/or sustains an incorporated apostolate
that remains canonically a part of the church entity. This
retention of control need not be such as to create civil
law liability on the part of the sponsor for
corporate acts or omissions but should be enough for the
canonical stewards of the sponsoring organization to meet
their canonical obligations of faith and administration
regarding the activities of the incorporated apostolate.”
(Rev. Jordan Hite, T.O.R., J.D., A Primer on Public and
Private Juridic Persons: Applications to Catholic
Healthcare Ministry, Catholic Health Association, St.
Louis, MO, 2000, p. 37.).
</p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
The term “sponsorship” is not formally defined in
theology, canon law or civil law. It has developed in
recent years and is often used currently to describe the
official relationship between an apostolic work and the
ecclesial entity under whose auspices the apostolic work
is being conducted.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.33">
<h4 id="sec-9.2.33">9.2.33 <span class="target">hasDepartment</span>
</h4>
<div id="text-9.2.33">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#hasDepartment">http://www.sdb.org/vocabulary/ConsecratedLife#hasDepartment</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
has department
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Indicates a sub unit which is part of this consecrated
life group, e.g. a Department within a Sector. It is
organizational in nature rather than charismatic (if this
latter, then it would belong to the class of Sectors).
</p>
<p>
<b>skos:broader</b>
</p>
<p>
Sub property of org:hasSubOrganization
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.34">
<h4 id="sec-9.2.34">9.2.34 <span class="target">linkedTo</span>
</h4>
<div id="text-9.2.34">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#linkedTo">http://www.sdb.org/vocabulary/ConsecratedLife#linkedTo</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
linked to
</p>
<p>
<b>skos:definition</b>
</p>
<p>
An organizational relationship between two groups.
</p>
<p>
<b>skos:scopeNote</b>
</p>
<p>
Indicates an arbitrary relationship between two groups,
either between two or more consecrated life groups where
they are working in common on a project. Or it may be
especially useful where there is a sub unit of the group,
perhaps operating as an NGO but the relationships are not
formalized, or are formalized outside the scope of this
vocabulary which deals especially with relationships
within the ecclesial community.
</p>
</div>
</div>
<div class="outline-4" id="outline-container-9.2.35">
<h4 id="sec-9.2.35">9.2.35 <span class="target">siteAddress</span>
</h4>
<div id="text-9.2.35">
<p><b>URI</b>
</p>
<p>
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#siteAddress">http://www.sdb.org/vocabulary/ConsecratedLife#siteAddress</a>
</p>
<p>
<b>skos:prefLabel</b>
</p>
<p>
site address
</p>
<p>
<b>skos:definition</b>
</p>
<p>
Indicates a VCard (using the <a href="http://www.w3.org/TR/vcard-rdf/">http://www.w3.org/TR/vcard-rdf/</a>
vocabulary) for the site. This can include email,
telephone, and geo-location details as well as an address.
</p>
</div>
</div>
</div>
</div>
</body>
</html>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' general councillor.
!!!''Definition:'' (if a precise one exists)
A member of the group which cooperates with the Rector Major in the animation and government of the Congregation (C. 130)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Obviously, a General Councillor belongs to the ''General Council'' which comprises (in addition to the Rector Major):
the ''Vicar of the Rector Major'',
''Sector Councillors'': the Councillor for Formation, the Councillor for Youth Ministry, the Councillor for Social Communication, the Councillor for the Missions,
''Regional Councillors'' for: Africa-Madagascar, North Europe, West Europe, Italy-Middle East, South Asia, East Asia-Oceania, Interamerica, America South Cone.
''Secretary General'', though he is not normally referred to as a general councillor.
Not strictly members of the General Council but working directly with it are:
''Procurator General''
''Postulator General''
!!!''Usage notes''
The term is more likely to be capitlised as General Councillor
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
British spelling: councillor; US spelling: councilor
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[procuratore generale]] [[postulatore generale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' council.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Expect this term to appear in Salesian literature and parlance in at least the following phrases:
//consiglio generale//
//consiglio superiore// superior council (now deprecated)
//consiglio ispettoriale// provincial council
//consiglio della casa/della comunità/locale// house/community/local council
//consiglio della opera// council of the work
//consiglio mondiale// world council - Cooperators
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[house council|consiglio della casa]] //
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' house council.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
community council, house council, local council
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
Prior to General Chapter 19, this body was called a house chapter. GC19 altered the term to house council. By GC21, a synonym, council of the community, existed side-by-side with house council: sometimes the document used one, sometimes the other. There appears to be no formal indication regarding this usage. By the time the renewed Constitutions were formally in place after GC22, the official term became local council, but in ordinary conversation, house council has continued until this day, even occasionally creeping into English translations of more recent documents (e.g. AGC 389). We occasionally also find community council rather than council of the community (GC24 no. 123).
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
One could surmise that the persistence of 'house council' is to disambiguate the term from other kinds of local council (Salesian Family, Cooperators, EPC). House makes it immediately clear that it would refer to the Salesian community
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' advisory council.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Riunione di più persone per consultarsi intorno a una deliberazione da prendere// A meeting of a number of people for consultation regarding decision to be taken.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
IN the Salesian context, the 'advisory council is an administrative group which helps a sector or its department to evaluate, research, study, offer guidelines and materials for regular updating.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The English translation of the Constitutions (1984) employs 'consultant board' to translate //consulta//, but this seems a little odd and possibly determined by wanting to stay close to the actual Italian //consulta//. That has led to some mistranslations in the past.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[curatorium]]//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' contemplation.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Profonda concentrazione della mente nella meditazione di cose divine o spirituali: c. di Dio, della morte, delle verità eterne; nella teologia cattolica, c. infusa (o mistica), elevazione dell’anima sopra ogni modo ordinario di conoscere, fino a una cognizione semplice e affettiva di Dio.// Profound concentration of the mind in meditation on divine or spiritual things ... in Catholic theology ... the lifting up of the mind above any ordinary way of knowing to a simple and affective knowledge of God.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term appears among Desramaut's 100 words of Salesian spirituality. It can be found in the language of both Francis de Sales and Don Bosco. There is today a renewed understanding of Salesian life as that of the 'contemplative in action'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ecstasy of action|L'estasi dell'azione]].//
<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template="$:/core/ui/ListItemTemplate"/>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' convent.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Casa dove abitano i religiosi e le religiose di ordini mendicanti, per la cui erezione è necessario il beneplacito della Santa Sede e il consenso del vescovo del luogo; a volte il termine è usato come sinon. di monastero, che più propriamente indica comunità di monaci o di monache.// House where male, female religious belonging to the mendicant orders live ... at times the term is used synonymously with 'monastery' which more appropriately indicates a community of monks or nuns.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
In the Philippines, Japan and elsewhere in Asia, Middle East it is often used in reference to male religious communities (possibly because Franciscan male communities are regularly referred to as convents, hence 'The Conventuals'). In India, a convent school is any English medium school offering elementary education. This would not be the case, for instance, in Australia where a convent school would normally be run by religious women or under the auspices (since now there are so few of this category) of a women's religious community.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[house|casa]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' boarding (school ... ).
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Istituto nel quale i giovani vivono insieme, sotto la guida di superiori, per essere educati e istruiti (è in genere sinon. di collegio).// An institute in which young people live together under the guidance of superiors to be educated (in general, synonymous with //collegio//.
!!!''Synonyms:''
Pastoral Institute (for the //Convitto Ecclesiastico//)
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term was common in the 19th Century to indicate boarding or residential schools. DB often uses //ospizio//, also a boarding institution but generally for the underprivileged. The //convitto// developed into a //convitto-collegio// or boarding school, for Don Bosco, within a very few years.
The //Convitto Ecclesiastico// was where the newly ordained Don Bosco spent time learning the practical side of his priesthood under the guidance of Fr Cafasso. We would normally call it the 'Pastoral Institute' in English.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[college|collegio]], [[house attached|casa annessa]]//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian Cooperator.
!!!''Definition:'' (if a precise one exists)
Association founded directly by Don Bosco, to help him in 'the work of the oratories', whose members may be lay or clerical, but who do not take any vow by virtue of their membership.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The current official term for the Salesian Cooperators Association in Italian is //Associazione Salesiani Cooperatori//, though it bore the title //Associazione Cooperatori Salesiani// for most of its existence. At one time the word //pia// (pious) was included, believing this was DB's term - it was, but only to distinguish it from certain Masonic sects and usually only viva voce. In fact, Don Bosco initially adopted the term //Associazione salesiana//, hoping to include its members as external members of his fledgling Society.
Don Bosco's struggle to establish the Salesian Cooperators Association as recognised by the Church involved his use of the term 'Third Order', but he expressly said 'in the style of...' (//a modo del Terzo ordine//), clearly indicating that his concept was a new one. In Salesian tradition we do not use the term 'Third Order' because neither SDBs nor FMAs have ever been referred to as 1st and 2nd order.
!!!''Usage notes''
The term is usually shortened in English to 'Salesian Cooperators' or just 'Cooperators', and similarly in Italian.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
In Italian, the group is abbreviated in the plural with SS.CC, while in English the abbreviation is SC in both singular and plural.
While the change from //Cooperatore Salesiano// to //Salesiano Cooperatore// appears not to be significant for English, it is more evidently so for Italian, where //Salesiano// is understood in this phrase to be a noun rather than an adjective. //Cooperatore// then becomes the qualifier. But a similar linguistically consistent argument follows for English: by rights the term should now be 'Cooperator-Salesian' (the hyphen marks the issue a little more, suggesting that 'Salesian' is in fact being qualified by 'Cooperator' (as it is now in Italian). The perception is not this, of course, so in a sense the 'problem' has now been transferred to English!
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Coordinator General.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
The term is applied to the world leader of the Salesian Cooperators and in this form as as General Coordinator, to several other leaders of lay member groups of the Salesian Family (Witnesses to the Resurrection TR, based in Italy, The Disciples, based in India ... )
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Cooperators|
Cooperatore Salesiano/Salesiano Cooperatore]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[it]'' (Target Language, as above) <br>''Glossed as:'' Cuor solo et anima sola.
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Of one heart and soul/mind.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
We find the phrase first of all in Don Bosco's introduction to the //Life of St Dominic Savio//. We then find it again in the //Letter from Rome// where he is addressing the problems of the Oratory spirit. Again it appears in his //Spiritual Testament// as a description of the way members of a community should be in unity with their rector. Yet again in DB's letter //ai soci salesiani// on the approval of the Constitutions and which becamne the introduction to the Constitutions at the time. It was repeated by General Chapters, especially from GC20 onwards. No surprise then to find the same phrase in the renewed Salesian Constitutions.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian spirit|spirito salesiano]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' playground.
!!!''Definition:'' (if a precise one exists)
As it functioned at the Oratory: one of Don Bosco's original creations, an area (probably surrounded by buildings and connected to them large enough to allow a great number of young people to take part in games.
Don Bosco occasionally used the term 'recreation park' (//giardino di ricreazione//) but only for pragmatic reasons to help outsiders understand. The typical playground those days was small, too small for DB's purposes.
His concept of recreation made the playground what it was: active, choice, presence of the educators through assistance.
!!!''Synonyms:''
courtyard
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
There is a whole new context for 'playground' today as indicated by the 26th General Chapter:
"We also feel questioned by the new technologies of social communication and the educational challenges they pose. Today's communication opportunities have become an habitual way for young people to meet, exchange ideas, and get involved quickly and with great mobility, but also in an impersonal and virtual way. The culture of personal media can compromise one's ability to mature in personal relationships and exposes young people especially to the danger of very negative encounters and dependencies; this is the “playground” where we need to be present in order to listen, enlighten, guide". (No. 99)
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
ALERT! While a //cortile// will always be a yard or even a courtyard (especially in a European setting where it is often a central open space surrounded by buildings), in its Salesian usage, even in Don Bosco's understanding, it was a 'recreation park' and essentially a playground, so perhaps 'playground' is a better general gloss for this term in Salesian discourse.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[games|barrarotta]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' constitutions.
!!!''Definition:'' (if a precise one exists)
Can. 587 §1 To protect more faithfully the vocation and identity of each institute, the ''fundamental code or constitutions'' of the institute are to contain, in addition to those elements which are to be preserved in accordance with can. 578, basic norms about the governance of the institute, the discipline of the members, the admission and formation of members, and the proper object of their sacred bonds.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Fourth Lateran Council (1215) had determined that the only three Rules recognised were the Basilian, Augustinian and Benedictine Rules. All subsequent foundations were based on these. But to meet local circumstances, they produced 'constitutions'. Gradually, these came to be recognised as, in fact, the 'rule' by which the group was living. The foundation of the 'modern Congregations' (e.g. the Jesuits) meant a further transition in the understanding of constitutions. Don Bosco, in the 1860's when he was beginning to think in terms of constitutions, made no clear distinction between rules, constitutions, regulations, statutues and regulatory structures, but the Church was beginning, already in 1863, to reform and streamline its approach to these matters.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The term came into use from 13th Century. Prior to that it was simply called a 'Rule'. Abbreviated in English as C.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Decretum laudis]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian christology.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A term first coined by Fr Pascual Chavez
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Chavez384: ..Dio, qualcuno potrebbe domandarsi se si può dare una "cristologia salesiana" oppure se la cristologia ...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Criteria and norms for Salesian vocational discernment.
!!!''Definition:'' (if a precise one exists)
A complement to the normative text, 'Formation of the Salesians of Don Bosco. Principles and Norms.'
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[formation|formazione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' the oratory criterion.
!!!''Definition:'' (if a precise one exists)
Fundamental criterion (or criteria in plural) drawn from the Oratory experience and codified in C.40
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Fromn this we also get //cuore oratoriano// or oratorian heart, a part of common Salesian parlance since Fr Viganò or more correctly since GC21 (but still Fr Vigano speaking).
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Normally written as Oratory criterion.
!!!''Citation''
C. 40: Don Bosco lived a pastoral experience in his first Oratory which serves as a model; it was for the youngsters a home that welcomed, a parish that evangelized, a school that prepared them for life, and a playground where friends could meet and enjoy themselves.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[oratory|oratorio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' house chronicle.
!!!''Definition:'' (if a precise one exists)
In the BM we find a conference by DB to Rectors 2nd Feb 1876 where he recommends the keeping of a chronicle in each House. A chronicle is a record produced at or near the time of the event.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
Not to be confused with 'memoir', a record produced by an eyewitness at times long after the event.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[chronicles|Crònicchetta]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Little Chronicle.
!!!''Definition:'' (if a precise one exists)
When we speak of “chronicles” in the present context we are referring to contemporary written reports authored by Salesians close to Don Bosco who witnessed what he said or did. This initiative was no haphazard effort by some individual; on the contrary, it originated out of a common consciousness and concern. (Lenti //Don Bosco:History and Spirit// (Vol1).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Autograph “Little Chronicle” (//Cronichetta//,) is Barberis’ most important record. It is a collection of reports dated from May 10, 1875, to June 7, 1879. With the exception of a few inserted items (in other hands,) it is wholly in Barberis’ own hand. It is, however, as he himself states and as is generally evident from the text, a good copy produced from original notes (not extant,) surely aided by memory and perhaps also by other people’s reports.
(2) “Little Chronicle of Don Bosco’s Talks” (//Cronichetta discorsi//) consists of 20 numbered notebooks and 14 unnumbered notebooks, partly in Barberis’ hand and partly in other hands.
(3) Edited Chronicle in Various Hands (//Cronichetta varie mani//.) With scribal help from his novices, but clearly under his supervision, Barberis had the Little Chronicle edited and augmented in various ways, and with criteria that are not altogether clear. This record consists of several series of loose sheets, the various series bearing Roman numerals from I to XXXVIII. However, some series (whole or in part) have been lost and are not in ASC.
(4) Barberis also authored a “Little Chronicle of Earlier Times” or “Notices on the Life of the Very Rev. Fr. John Bosco” (//Chronichetta anteriore o Cenni sulla vita del M. R. Sac. Giovanni Bosco// ... This record consists of 12 notebooks containing material from the years 1815-1875 derived from various earlier sources.
Chroniclers of Don Bosco include:
''The Ruffino-Bonetti Period (1861-1864)'': Throughout his brief life as a Salesian, Ruffino took pains to chronicle events and words of Don Bosco, and produced several notebooks: five Chronicles at the Oratory and two Books of Experience during his assignment at Lanzo in 1864. As a principal member of the Historical Committee of 1861, Bonetti continued fairly systematically what he had already begun back in 1858, that is, recording words and deeds of Don Bosco. His chronicles fill five notebooks that have come down to us.
Second Period of Concerted Recording Activity: ''The Barberis-Berto Period (1875-1879)'': Barberis (see above). Although Berto chronicled assorted events and collected souvenirs over many years, it is as Don Bosco’s secretary that he made his most valuable contribution. In that capacity, his first duty was to clear the staggering amount of work which daily crossed his secretarial desk. But it also fell to him to accompany Don Bosco on a number of trips to Rome in times of Don Bosco’s deepest involvement in affairs of the Congregation as well as in affairs of Church and State. His reports of these trips, especially of Don Bosco’s activity during extended sojourns in the eternal city, cover the decade 1873-1882.
Third Period of Recording Activity: The ''Lemoyne-Viglietti Period (1884-1888)'': Father John Baptist Lemoyne (1839-1916) had joined Don Bosco at the Oratory as a newly ordained priest from Genoa in 1864. He was so taken with Don Bosco’s saintliness and extraordinary personality that, independently of the Historical Committee, he began to record what he saw and heard. The following are important reports.
(1) An Untitled Notebook with entries dated from his arrival at the Oratory, October 18, 1864 to April 27, 1865 testifies to Lemoyne’s immediate commitment to the cause.
Following Ruffino’s death in July 1865, Lemoyne was chosen to succeed him as director of the school at nearby Lanzo, where Don Bosco was a frequent visitor. From there he continued his recording activity.
(2) A second notebook entitled Memoirs 1868 contains some dream narratives and words of Don Bosco (for 1867-1868.)
In 1877, Lemoyne was appointed local spiritual director of the Daughters of Mary Help of Christians at their Mother House of Mornese (and from 1879, Nizza,) much less accessible towns lying at a considerable distance from Turin. But even during those years of “exile” he had occasional opportunities to add to his chronicle.
In 1883 (after his years of “exile”) Fr. Lemoyne returned to the Oratory as secretary of the Superior Chapter (General Council) and could thus personally attend to the gathering of historical documentation on Don Bosco. Lemoyne’s appointment inaugurates a fertile period of recording activity spanning the latter 1880s up to the founder’s death in 1888. Lemoyne become an indefatigable collector of material, which he recorded in numerous notebooks. One of these deserves special mention.
(3) Lemoyne’s notebook entitled Office Agenda (//Ricordi di gabinetto//) is essentially a first-draft chronicle for the year 1884.
In addition to this from 1885 on, probably at Father Rua’s behest, he began to gather and excerpt all prior records for a great collection:
(4) The //Documenti//, which he had privately printed. This compilation later served as the basis for his monumental work:
(5) The //Biographical Memoirs//, of which Lemoyne edited the first nine volumes
Lemoyne’s most faithful collaborator, to whom we owe much of our knowledge of Don Bosco’s last years, is Carlo-Maria Viglietti (1864-1915.)
(1) His fundamental work is the original Chronicle of Don Bosco, in 8 notebooks, with entries dating from May 20, 1884 to January 31, 1888, the day of Don Bosco’s death.
(2) Subsequently Viglietti transcribed the original work with additions and other editing, thus producing a transcribed and edited Chronicle of Don Bosco, in two parts (so it appears) filling five larger notebooks, spanning the same time period. He also prepared further partial editions of his chronicle.
(3) Viglietti also produced a Diary, which is largely a collection of episodes, dreams, etc., dating from various periods of Don Bosco’s life
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Chronicles of the Institute of the Daughters of Mary Help of Christians.
!!!''Definition:'' (if a precise one exists)
History and spirit of the Salesian Sisters as recorded in the earliest historical documents, 1828-1888.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
The term is more often left untranslated as //Cronistoria//.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' CSJ Caritas Sisters of Jesus.
!!!''Definition:'' (if a precise one exists)
Our Congregation was founded through the work of evangelising the Salesian missionaries that arrived in Japan in 1936 and it was born in Miyazaki in 1937 as a female religious institute, to which the name [Caritas] was given by Antonio Cavoli, which means [God’s free love that is offered without boundaries]. In the name of the Congregation, they have echoed the Rector Major’s farewell speech (then D. Rinaldi) to the missionaries sent to Japan, where despite social civilisation being at a high level, knowledge of Caritas as taught by Jesus Christ was missing. [Caritas as a unique means to instil ourselves in the souls of these people]. There are currently 950 sisters across 15 nations who strive to spread [Caritas], the merciful love of God.
Following this international expansion, in 1998 the Congregation was recognised as a Pontifical Institute, in 2008 the Generalate was transferred to Rome, and in 2009 the name was changed from [Caritas Sisters of Miyazaki] to [Caritas Sisters of Jesus] which better expresses our charisma.
!!!''Synonyms:''
Caritas Sisters of Jesus
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[pl]'' (Target Language, as above) <br>''Glossed as:'' Zgromadzenie Sw. Michala Archaniola
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' CSMA Congregation of St Michael the Archangel.
''TL'' is ''[it]'' (Target Language, as above) <br>''Glossed as:'' Michaeliti
!!!''Definition:'' (if a precise one exists)
Religious Congregation of Pontifical Right founded by Blessed Bronislaus Markiewicz in Poland in 1921; member group of the Salesian Family.
!!!''Synonyms:''
Michaelites
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The spirituality of this religious family is summed up in two sentences: One who is like God! - Work and Temperance.
The first motto points to God as the only meaning in life. The second expresses the charism and style of life of the Michaelites. The Religious Congregation of St Michael the Archangel, in fact, realises its calling through temperance, understood as freedom from any interior or exterior conditioning. Another element that characterises the Michaelites activity is threefold work: spiritual, intellectual, manual.
The Michaelites show a predilection for pastoral work for the young and for children, be it in parishes, or in works for the orphaned and abandoned. as well as parishes, the Michaelites exercise their charism in popular missions, retreats, publishing activities, looking after priestly and religious vocations, running a number of Shrines.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' CSSMA The Sisters of St Michael the Archangel.
!!!''Definition:'' (if a precise one exists)
Religious Congregation of Pontifical Right.
FROM WEBSITE: //Zgromadzenie Sióstr św. Michała Archanioła, o popularnej nazwie michalitki jest instytutem zakonnym, w którym siostry łączą postawę kontemplacyjnego uwielbienia Boga z czynną miłością apostolską realizowaną w pracy wychowawczej, katechetycznej, charytatywno-społecznej, w duszpasterstwie parafialnym i na misjach.// Congregation of the Sisters of St. Michael the Archangel, known popularly as the Michaelites, is a religious institute in which the sisters combine the attitude of contemplative praise of God with active apostolic love carried out in educational, catechetical, charitable and social work, in parish pastoral work and missions.
!!!''Synonyms:''
Michaelites
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Founder: Blessed Bronislaus Markiewicz and Servant of God Mother Anna Kaworek
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' curatorium.
!!!''Definition:'' (if a precise one exists)
WIKTIONARY: A board of curators or advisory board, (in certain European institutions).
Vocabulary.com: a governing board elected or appointed to direct the policies of an educational institution
!!!''Synonyms:''
advisory board
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The //curatori// (board of curators) are provincials from provinces which share responsibility for a studentate (e.g. of theology). The purpose is to define rights and duties of provinces, the role of the local provincial and the areas and forms of collaboration.
!!!''Usage notes''
An example: the curatorium of the Don Bosco Center of Studies in the Philippines.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Chavez ACG380: Accompagnare il "curatorium" dei centri di...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[DBCS Don Bosco Center of Studies]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' give me souls, take away the rest.
!!!''Definition:'' (if a precise one exists)
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Often left in its Latin form, this is the motto adopted by Don Bosco from the time he began the work of the Oratories (his own claim), though it did not become an official motto until the debate, late in his life, over the wording to include in the Congregation's Coat of Arms, where he insisted on this motto as one which had characterised his work from the beginning.
His claim, in his //Life of Dominic Savio//, that it was frequently to be heard on the lips of St Francis of Sales, has little evidence behind it. In all of the published writings of Saint Francis of Sales we do not find it once. Instead his close friend, the Bishop of Belley (Jean-Pierre Camus), in his //Spirit of St Francis de Sales//, a book that no doubt Don Bosco had read as a seminarian at Chieri, quotes Francis as having said this in response to a question whether he would want to be the Prince Bishop of Geneva, given that circumstances did not allow him to take possession of that See. He answered along the lines that all he wanted was the souls of the people, not the rest that went with such an Office. The phrase itself is a direct quote from Genesis 14:21 (the king of Sodom's response to Abram).
<br>
!!!''Usage notes''
Sometimes //cetera// is spelled with another variant: //coetera// or even //caetera//. There is an argument that //cetera// is the more original spelling, the other being a corrupted form.
Very often the full term is shortened to //Da mihi animas//.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[povertà]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' DBCS Don Bosco Center of Studies.
!!!''Definition:'' (if a precise one exists)
DBCS website: We are a Salesian Institution and a theological-pastoral community forming priests, religious and laity to be youth ministers and educators in the faith in response to the challenge of New Evangelization.
!!!''Synonyms:''
Seminaryo ng Don Bosco
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Don Bosco Center of Studies was established in 1972 as a residence for Salesian candidates to the priesthood who were studying theology at the Ecclesiastical Faculties of the Pontifical University of Sto. Tomas, Manila.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[curatorium]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' DBI Don Bosco International.
!!!''Definition:'' (if a precise one exists)
From the DBI Mission statement at donboscointernational.eu DON BOSCO INERNATIONAL (DBI) is a platform created to facilitate a meaningful dialogue between the Salesians of Don Bosco and the European institutions and NGOs
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
DBI represents the Salesian Congregation in different international organizations and institutions as a:
* meaningful presence in eu institutions and eu platforms
* communication channel between don bosco projects and policies dealing with education, culture and youth that are promoted by the eu institutions
* platform that promotes and mentors initiatives and projects planned by local don bosco projects in cooperation with various international institutions
* coordinator of shared projects and initiatives already existing in several fields of salesian presences.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The term remains untranslated in other languages
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[DBN Don Bosco Network]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' DBN Don Bosco Network.
!!!''Definition:'' (if a precise one exists)
Don Bosco Network (DBN) is a worldwide federation of Salesian development NGOs founded in 2010 whose vision, mission and actions are based on the values and principles expressed by the Salesian tradition of solidarity with the poor.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Federation, whose headquarters are in Rome, counts on networking between 6 NGOs: VIS (Italy), Dmos-Comide (Belgium), Jugend Dritte Welt (Germany), Jovenes y Desarrollo (Spain), Salesian Missions (USA), Noi per Loro (Italy).
Its strategic and operational fields are:
* policy building and general coordination of the activities of associated members;
* lobbying / advocacy;
* training and education;
* communication
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The term is sourced from English and is not translated into other languages.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco International]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' decree of commendation.
!!!''Definition:'' (if a precise one exists)
When a Congregation has grown in importance and when its spiritual and apostolic maturity is observed, it can be formally approved by the Pope with the //decretum laudis//, which transforms it into a congregation of pontifical right, subject to immediate and exclusive authority of the Holy See (Drawn broadly from the //Dizionario degli istituti di perfezione// [Dictionary of the Institutes of Perfection], vol. III, (Milan: San Paolo Edizioni [St. Paul Editions], 1977.)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
It is interesting to note that Don Bosco was seeking approval for the Society of St Francis de Sales precisely at a time when the Church was revising its approach. This, along with certain difficulties Don Bosco was facing in his personal relationships with his Archbishop (Gastaldi) in the last part of the process particularly, meant it was 1874 before he finally gained the last needed approval, the //decretum laudis//. In 1863, the Holy See decided to reform the processes of approval for new Congregations by introducing what it called the //Methodus//, which foresaw first a decree of commendation, a form of encouragement to continue with the process, then a decree of approval for the institute, followed finally by the decree of approval of the constitutions.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[congregation|congregazione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' group (of ten).
!!!''Definition:'' (if a precise one exists)
TRECCANI: (1) In ancient Rome, each of the 10 subdivisions of the military contingent known as the //curia// was made up of 10 soldiers. Historically, //decuria// does not appear in the infantry orders but in those of the cavalry ...
GIRAUDO: (2) From the Jesuit //Ratio studiorum// we know that a class (which might have 50-70 students) had just one teacher, so the //Ratio// indicated subdivisions in the classroom (//decurie//) and a hierarchical set of relationships based on ancient Roman tradition.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
We find the term referred to by Don Bosco when he describes his own schooling. But he later used the same term for his various lay associations (e.g. for spreading good books, disseminating the Catholic Readings, running his lotteries), including derivative terms, e.g. //decurione// or 'decurion'.
In the scholastic instance, every month the teacher would establish the //decurie//, that is, he would divide the pupils into groups (//decurie//) according to merit: there were the //primi eximi//, the outstanding group, then the //mediocri// and finally the //inacallidi//.
Every //decuria// was led by a //decurione//, that is, the best pupil in each group, the one who had received the highest points compared to his classmates in that group.
Every //decuria// occupied places in the classroom closer or further away from the teacher, according to merit, and the worthiest pupils also sat on a higher seat than the others and wore a medal on their chest (as a //principe// or //censore// or //console// or //decurione//). They also wore these medals outside school hours.
Then, each month there was the //lavoro dei posti//, an especially demanding assignment (perhaps a translation from Latin to Italian or the other way around) which was scored according to the number of errors. The results determined which //decuria// the pupil went into for the coming month and where he sat.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
8. Nel giorno di san Francesco di Sales, e nella festa di Maria Ausiliatrice ogni decurione radunerà i membri della propria decuria per animarsi reciprocamente alla divozione verso di questi celesti protettori, invocando il loro patrocinio a fine di perseverare nelle opere cominciate secondo lo scopo dell’Associazione. (From DB's 1876 document on the Salesian cooperators, //Cooperatori Salesiani ossia un modo pratico per giovare al buon costume e alla civile società//)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' delegation.
!!!''Definition:'' (if a precise one exists)
C. 159 If, within the confines of a province, distance or other reasons prevent the provincial from taking proper care of some local communities which, although having a certain unity among them do not have the requisites necessary for erection as a vice-province, the provincial with the consent and the approval of the Rector Major, can set up a delegation.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The leader of a delegation is called the delegate.
The term is especially important for the EAO Region, since it currently has 5 of the 10 Delegations in the Congregation: AUL - Pacific, FIS - Pakistan, THA - Cambodia, VIE-Mongolia, VIE - Vietnam North.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Normally spelt with a capital D in English, and likewise for the Delegate.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[vice-province|visitatoria]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' deliberation.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //L’atto, il fatto di deliberare: prendere una d.// The act, the fact of deliberating; taking a decision.
!!!''Synonyms:''
official decision, determination
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
These days it is clear enough that we distinguish deliberations of a Chapter from working guidelines. It was not always so. In the early Chapters of the Congregation, e.g. Chapters I and II, the number of deliberations were as many as 300-400. The 9th GC had the task of making some sense of and putting some order into this tendency, separating general deliberations which gave completeness to the Constitutions from those of a generally exhortative and optional kind.
This Chapter, then, made a distinction between 'organic' and 'preceptive' deliberations. The term 'organic' was never fully clarified, but could be said to be synonymous with constitutional in this instance. 'Preceptive' deliberations were still important but regarded as disciplinary, coming into force by virtue of their acceptance by the Rector Major (in contrast to the former group which required the approval of the Holy See). The distinction could be seen as the difference between Constitutions and Regulations.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
DBmem: 1 Si tengano segrete le deliberazioni capitolari, e se avvi qualche cosa da comunicare ad altri,...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Chapter|capitolo]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' the one(s) to whom we are sent.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //In genere, la persona a cui una cosa è destinata// In general terms, the person to whom something is addressed.
!!!''Synonyms:''
beneficiary, addressee
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
It is not so easy to gloss this word with a single word in English, depending on context. More often than not 'the ones to whom we are sent' (//destinatari//) will suffice, or 'our charges' or ..., but of course 'destinataries' does not exist!
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Vecchi ACG354:..desta l'attenzione verso la situazione del destinatario,...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' devotion.
!!!''Definition:'' (if a precise one exists)
'Devotion' is distinguished from 'devotions' as 'prayer' is from 'prayers'.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Note its history in Salesian (St F de S) terms - a favoured term of St Francis de Sales with particular meaning, probably closer to what today we would call 'apostolic charity'.
In the longer Christian tradition the term has a rich and also complicated story. There have been long periods when it has meant mainly 'devotions', in the plural, and almost a substitute for 'true religion'. But devotions were also reincorporated or re-upholstered by Paul VI's Evangelii Nuntiandi as legitimate popular spirituality.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[pastoral charity|carità pastorale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' de Sales, Francis.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Born 21 August 1567 in the de Sales castle at Thoren, Savoy. Died 28 December 1622. The term 'Salesian' is initially a reference to this Saint and his spirituality. Which is why we use the expression 'Salesian of Don Bosco' to note the distinction. There is also a 'Salesian Family', then, quite apart from that pertaining to Don Bosco.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The term is originally French (//François de Sales//). Italian has Italianised the entire name. English does not alter the orthography for the surname, but anglicises the Christian name.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian|Salesiano]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' department.
!!!''Definition:'' (if a precise one exists)
An organisational arrangement under a sector
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
We do not use the Vatican-English gloss, 'dicastery' in Salesian discourse.
There are also what is known as the //dicasteri della missione salesiana// or 'departments of the Salesian mission', a neologism arising out of GC26, which decided to increase collaboration between three departments in particular: Youth Ministry, Social Communications, Missions. The Rector Major himself undertook to oversee this collaboration, and he also gave these 'departments of the mission' the task of working together for //Progetto Europa//, 'Project Europe'.
!!!''Usage notes''
There is an important distinction to be made between between a 'department' //dicastero//, and a 'sector' //settore//, the latter being the superordinate concept. Other matters below a department might be called 'areas'. By way of example, the Social Communications sector has a department which looks after a number of areas.
Current departments are: Youth Ministry, Formation, Missions, Social Communication. The Economy and Salesian Family do not strictly have a 'department' structure.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
CG26: Evidenzio in particolare l’orientamento espresso circa i cosiddetti “dicasteri della missione salesiana”. Il Capitolo ha espresso l’esigenza di maggior collaborazione ed unitarietà nell’impostazione e nella realizzazione della missione salesiana. Incoraggio le ispettorie a tener presente questa sensibilità ed a trarne ispirazione nell’animazione ispettoriale.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[settore]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' director, rector.
!!!''Definition:'' (if a precise one exists)
The superior of a local community. He must be a priest, perpetually professed for at least five years, and is appointed by the provincial with the consent of his council and the approval of the Rector Major. He is first in order of responsibility for the religious life of the community, its apostolic activities and the administration of its goods. (C. 176, 177 SDB Constitutions).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
GC21 clarified the role and figure of the Salesian Rector, recalling the insistence of GC19 that "the rector constitutes without shadow of doubt the centre of unity and of initiative of all Salesian work whatever its type or composition". It noted the complexity of a role involving religious and spiritual life, apostolic and pastoral work, educational and cultural dimensions, economic and organisational aspects. Thus GC21 laid down a number of clear criteria:
* the ecclesial and pastoral nature of the Salesian community
* the kind of community spirit explicitly willed by Don Bosco (who called himself the 'first rector')
* Salesian tradition which has as the guide of the community one with priestly ordination and pastoral experience.
These criteria enabled GC21 to establish the following priorities:
* he preserves unity and is custodian of Salesian identity
* he is the pastoral guide of the Salesian mission
* he directs the work of education and human development that results from the community's mission
* he bears principal responsibility for the overall operation of the work.
These criteria and priorities eventually led to the formulation of the renewed Constitutions regarding the Rector, and the drawing up of a Rector's Manual.
!!!''Usage notes''
director (en-gb), rector (en-us)
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
May often be capitalised as Director, Rector
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[community|comunità]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' directory.
!!!''Definition:'' (if a precise one exists)
The term has a juridical meaning for religious communities - ''General Directory'': contains norms valid for the entire Congregation; directory on specific topics (e.g. the ''Formation Directory'', otherwise known as the //Ratio institutionis et studiorum - FSDB//). There is also a directory at province level, known as a ''Provincial Directory''.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Code of Canon Law, renewed after Vatican II, left many concrete decisions to individual Institutes which are asked to express the nature of their specific charism for the benefit of the entire People of God. This takes place through a range of normative texts which come under the general heading of particular law, and in the case of the Salesian Society, as laid down in Constitution 190, they are:
* the ''Constitutions'', the fundamental code containing the essential definitions of the identity and mission of the Society, the purposes it proposes and the spirit which enlivens it, as well as the main outline of community organisation.
* the ''Regulations'' which translate the essentials of the fundamental code for changing circumstances, but always at a universal level
* the ''Deliberations of General Chapters'' which determine the practical guidelines for communities and confreres for a specific period of time (e.g. a six year period), or to achieve a specific aim. These may touch on things like community life, the educative and pastoral plan, the formation plan, mission plan etc.
* the ''General Directories'' as defined above
- the ''Provincial Directories'', again as indicated above, along with ''Deliberations of Provincial Chapters''. These directories are always approved by the Rector Major with the consent of his Council
!!!''Usage notes''
In the case of a province list of personnel and houses, some provinces also call this a directory (it might be better termed a year book in that case).
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Ratio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian General Administration.
!!!''Definition:'' (if a precise one exists)
Fundamentally made up of personnel from the Blessed Michael Rua Community of the Generalate, whose specific function is to assist, in various forms of service, the Rector Major with his council in their mission of unity and animation of the Congregation and the Salesian Family (taken from the Directory of the Bl. Michael Rua Community).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The General Administration includes at least the following roles and services:
RECTOR MAJOR and VICAR
* Secretary (x2)
SALESIAN FAMILY
* World Delegate (Cooperators),
* Confederal Delegate (Past Pupils),
* Central Assistant (VDB),
* ADMA Assistant and Coordinator,
DEPARTMENTS of VARIOUS SECTORS
* Co-workers (x many)
ECONOMER GENERAL'S OFFICE
* Secretary
* Administrative office,
* Patrimonial Office,
* Gerini Foundation,
* Don Bosco in the World Foundation,
* Post Office
SECRETARY GENERAL'S OFFICE
* Records Office
* Juridical Office
* Archives
* Protocol
* Translation (x many)
REGIONS
* Secretary (for each region)
HISTORICAL INSTITUTE (ISS)
* Director
* Secretary
* Member (x several)
ADMINISTRATION AND MAINTENANCE
* Bursar
* General Services
SDB PUBLISHERS (EDITRICE SDB)
CENTRAl LIBRARY
DOCUMENTATION
OFFICIAL SPOKESPERSON
PRESS OFFICE
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' proper law (of the Society).
!!!''Definition:'' (if a precise one exists)
Based on the Church's universal law, it is made up of the following: the Constitutions, the General Regulations, the Deliberations of General Chapters, the General Directories (which includes the Ratio, the Provincial Directories and other Provincial Chapter deliberations.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
The life and activities of communities and confreres are regulated by the universal law of the Church and the particular law of the Society. (C. 191)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Chapters|capitolo (generale CG) (ispettoriale CI)]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' well-behaved, obedient.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Più com., di persona che si piega facilmente alla volontà di chi ha il compito di guidarla: è un figlio d., o d’indole, di temperamento d.; essere d. agli avvertimenti, ai consigli; rendere d.// More common meaning is someone who bends easily to the will of the one guiding him or her.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
While the word can mean 'docile' be aware that this may be a 'false friend' in context. Its normal translation would be along the lines of 'obedient'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Fr (Father)
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Predicato d’onore che si antepone al nome e al cognome di ecclesiastici [...] secolari// An honorific place before the anme or surname of a member of the secular clergy.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco preferred //don// as a personal reference (//sac//. or //sacerdote// is what he used in correspondence to sign off). The choice of //don// over //padre// is linked to the distinction in Italy between diocesan clergy who use //don//, and religious priests who use //padre//.
!!!''Usage notes''
Italian often writes the term in lower case e.g. don Bosco. It can also be capitalised, e.g. Don Bosco.
Bosco, Rua, Albera, Rinaldi and Ricaldone were always referred to as 'Don' in English texts, without use of first name and with 'Don' untranslated. From the time of Ziggiotti onwards, reference in English was often to Fr (or Don) Renato Ziggiotti, Fr (or Don) Luigi Ricceri etc. Today the preference is to anglicise the reference, so Fr Ángel Fernández Artime.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
British spelling rules indicate that Fr does not take a full stop after it. US spelling always includes a period (Fr.)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Don Bosco.
!!!''Definition:'' (if a precise one exists)
* Born Aug. 16, 1815, Castelnuovo d’Asti (now Castelnuovo Don Bosco), Italy.
* Ordained June 5, 1841, Turin.
* Died Jan. 31, 1888, Turin.
* Canonised Apr. 1, 1934.
* Feast day Jan. 31.
!!!''Synonyms:''
St John Bosco
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Popularly known as Don Bosco, St. John Bosco is one of the most beloved of modern saints. From his childhood, he wanted to dedicate his life to keeping youngsters close to God. As a boy he used to repeat to his friends stories he had read or sermons he had heard and lead his listeners in the Rosary. From travelling jugglers, acrobats, and magicians he learned tricks and put on his own shows; the price of admission was joining in the common recitation of the Rosary.
As a young priest Don Bosco went to Turin. Hordes of boys were descending on the capital, looking for work in the factories and construction projects. Many of these youths were orphans, many were seasonal workers from the outlying farmlands, and those with families were usually poor and often had family problems. Don Bosco devised a plan to care for delinquents after their release and to keep boys out of trouble. He called the institution that he envisioned an “oratory,” a place of prayer. It was much more than that; it was a place to play and make friends, a school, an employment service, and a home. Every Sunday and feast day Don Bosco gathered the poor and the abandoned youths of Turin, heard their confessions, said Mass for them, preached in language they could understand, led them in games and hikes, told them stories, listened to their problems. He found them places to stay; before long he opened a hospice that eventually housed hundreds. He found them jobs with reputable employers. He opened a night school, and later a trade school and what we would call a college prep program.
All of this work Don Bosco put under the patronage of St. Francis de Sales, who was known for his patience and gentleness, qualities essential to educators. Hence the institution was called the Oratory of St. Francis de Sales.
Around 1850 Don Bosco began singling out youngsters who might become good priests; in return for helping him with catechism lessons and supervision, he offered them an education. Some of these youths decided to stay with him, and in 1859 with 22 of them he formed the Society of St. Francis de Sales—the Salesian Society. In the 1870s, with St. Mary Domenica Mazzarello he founded the Salesian Sisters to do the same sort of work of poor girls.
The first Salesian work outside Turin opened in 1863; by the time Don Bosco died his Salesians, men and women, numbered 1,400 and were in 9 countries of Europe and South America. Today they labor for poor and abandoned young people on all 6 continents, in about 130 countries, and number about 28,000. In addition there are tens of thousands of members of the wider Salesian family: cooperators, alumni, a secular institute, and several small religious congregations.
Trained to work from his boyhood, he occupied himself with young people, constantly interesting himself in their activities. After a day of physical work, he would spend the quiet hours of the night penning letters to friends for aid, sending letters of comfort to those who begged for his prayers, and writing books on mathematics, literature, the Bible, and Church history for boys. He began a pamphlet series, the "Catholic Readings," and for some time wrote a pamphlet a month on Catholic faith and morals. Always at the call of the Church, he was a tireless confessor; he was a popular preacher and never refused an invitation to preach a mission or a retreat.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Catholic Readings|Letture Cattoliche]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' doctor (but see comment).
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Medically speaking a //dottore// is a doctor (though also //medico//). But we may meet it in an educational context. On a professional level there is a wide difference between the use of //dottore// in Italian and 'Doctor' in English. In English an (academic) Doctor is one who has attained the Ph.D. In Italian anyone who has earned his //laurea// (college degree) is //dottore//. Heads of office departments may be called //dottore//. It is also a mark of respect for addressing individuals who may not be doctors, neither medically nor academically speaking.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' DQM The Daughters of the Queenship of Mary.
''TL'' is ''[it]'' (Target Language, as above) <br>''Glossed as:'' Figlie della Regalità di Maria Immacolata.
!!!''Definition:'' (if a precise one exists)
A Secular Institute of Diocesan Right. Recognised as members of the Salesian Family on 12 July 1996. Founded by Fr Carlo Torre sdb in Thailand
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Founded in Thailand by Fr Carlo Della Torre in 1954, the Institute was admitted into the Salesian Family on 12 July 1996. The institute of Daughters of the Queenship of Mary is a secular institute of diocesan right founded in the spirit of the Apostolic Constitution //Provida Mater Ecclesia// of Pope Pius XII, issued on 2 February 1947. It was canonically approved by the Archbishop of Bangkok on 3 December 1954.
The institute has a special relationship with the Salesian congregation, both through its founder and through the spirit handed down to its members. The institute recognises the Rector Major as successor of Don Bosco, as the father and leader of the entire Salesian Family.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' economy.
!!''Definition:'' (if a precise one exists)
One of the sectors of Salesian activity represented by a General Councillor
<br>
!!!''Synonyms:''
finance, financial administration
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
SSCS: ..per la Comunicazione Sociale, per la Pastorale Giovanile e per l'Economia
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Sector|settore]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' economer.
!!!''Definition:'' (if a precise one exists)
The person whose task it is to administer the material goods of the community in dependence on the Rector.
!!!''Synonyms:''
bursar, administrator, treasurer
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
'Economer' is a Loan term in English, borrowed directly from Italian. The term 'economer' is found in very few English dictionaries (it will not be found in OXford, Macquarie, Merriam-Webster ...), and is a case of inter-lingual misformation. Cf further linguistic comment below.
!!!''Usage notes'':
Salesian Provinces where English is spoken as a first language tend not to use the term (except for 'Economer General' and 'Provincial Economer' which are too ingrained now to alter) and instead employ terms like 'bursar' or 'administrator' or even 'treasurer' are employed, according to local custom. Many other provinces where English is one of the principal languages, remain with 'economer' even at local level.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The base morpheme 'econ' is recognisable, but a translator somewhere along the way has mis-selected the suffix, possibly thinking of a calque on the Italian //economo// (A calque is a direct translation of a loan term).
The Italian term goes back to the origins of the Congregation, however. While the term will always be understood within the confines of Salesian discourse, it may not be so easily understood beyond it.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' communications ecosystem.
!!!''Definition:'' (if a precise one exists)
The gamut of involvement and personal attitudes of those who agree to create an environment which is a real community of sharing ideals, values, relationships at the level of daily living in a community and a neighbourhood. (From a footnote in the original edition of SSCS).
!!!''Synonyms:''
Salesian Social Communication System
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
No 2.1 of the SSCS (Salesian Social Communication System) says, of communication, that 'Today, however, we can use a more effective metaphor: we can speak of an “ecosystem”. The quality of communication in a determined context
is guaranteed by a plurality of interacting factors. It follows that everyone, and also every organism, communicates in a truly effective way if there is consistency between the intentional message and the messages actually sent via what is done and what in fact is.'
!!!''Usage notes''
The term 'communications ecosystem' (or 'communicative ecosystem' in some instances, is not just a Salesian one. ''Communicative ecology'' (cf. Wikipedia) is a conceptual model used in the field of media and communications research, to analyse and represent the relationships between social interactions, discourse, and communication media and technology of individuals, collectives and networks in physical and digital environments.
There is also Marshal McLuhan's 1962 research on 'media ecology'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
'ecosistema' is a masculine noun in Italian, hence the adjective 'comunicativo'.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' publisher.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Chi fa stampare e pubblicare, del tutto o in parte a proprie spese, opere altrui, libri, musica, riviste, ecc.// The one who sees to the printing, publishing of works by other people (books, music, magazones ... )
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Beware of 'false friend'. //Editore// is not an editor but a publisher. //Editoria// is the publishing industry, while //editrice// is the publishing house.
!!!''Usage notes''
Note that //Editrice SDB// is more a name than a reality, in the sense that material published under the auspices of the Secretary General are usually ascribed to the //Editrice SDB// (Salesian Publishing House) even though this is not a physical reality.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Social Communication System|SSCS Sistema Salesiano di Comunicazione Sociale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' educator.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //(prof.) [chi educa, soprattutto i giovani: essere un buon e.] ≈ guida, istitutore, maestro, pedagogo, precettore, [nelle famiglie signorili di un tempo] aio.// Someone who educatoes, especially the young ... guide, instructor, teacher, pedagogue, tutor ...
!!!''Synonyms:''
teacher, pedagogue ...
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
When we find the term 'educator' in Salesian discourse, and we find it often, we need to bear in mind that the concept in Italian (from which language most of the references have derived) is wider than in English. Whereas in English the concept has a + specialist feature (hence teacher, administrator of a school, someone who has studied the theory, etc.) in Italian, an //educatore// could be a parent, parish priest or other non-specialist in the field of education as such. A Salesian is an educator (and pastor) by dint of profession, not because of some particular study of the field, though in almost every instance this latter would eventually apply.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
ALERT! There are a number of associated terms in Salesian discourse which are traps for the unwary, since they tend to be somewhat special usages. The normal adjectival form in English is 'educational', whereas Salesian discourse may often have 'educative', as in 'educative and pastoral community'.
It might also be worth noting here that, especially for derivatives, the Italian concept of education is broader than in English. Italian synonymous terms are //istruzione// and //formazione//. Hence we have ''education to love'' (The term finds its basis in the Salesian Constitutions on chastity where the vow renders the person 'capable of educating them to love and to purity', but the precise term comes from GC23. 192); ''education to faith'', a term which was given its particular contemporary force by GC23.
And finally, a defining feature of 'belonging' as a Past Pupil of Don Bosco is ''because of the education received''. Here again, the idea derives from the wider concept in Italian - which means someone who has attended an oratory has equal standing with someone who went to a Salesian school, in this regard.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[formazione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' educommunication.
!!!''Definition:'' (if a precise one exists)
SOURCE UNKNOWN: The complex of policies and activities inherent in the planning, putting into practice and evaluation of processes and products aimed at creating and strengthening communications ecosystems in educational settings, be they face to face or virtual.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A term popularised by Ismar Soares (Brazil) and in wider use in Latin American nations, and in some parts of Europe (France and Belgium particularly). In English it is akin to though not the same as 'media education' understood in the wider sense of that latter term as interested in much more than just the question of media literacy. The term has now found its place in Salesian discourse in two ways (a) in the Salesian Social Communication System, though more by description of its contents than by actual use of the term, and in the constant use of the term by the Salesian Sisters. They have strongly promoted the use of this term and the application of its content.
!!!''Usage notes''
There is strong resistance to the use of this term in English generally, not only amongst English-speaking Salesians but also amongst educators. The preferred terms are either 'media education' understood in its widest sense, or 'communication education'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[social communication|comunicazione sociale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Juridical Elements.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The full title is: //Elementi Giuridici e Prassi Administrativa nel Governo dell'Ispettoria//, or 'Juridical Elements and Administrative Praxis in Governing the Province'. Handbook on juridical matters - also published in an English version.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Juridical office|Ufficio anagrafico e statistico]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' year book.
!!!''Definition:'' (if a precise one exists)
<br>
!!!''Synonyms:''
list
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
see [[annuario]]
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Year Book|annuario]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Bishop.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
This Latin term with its abbreviation as 'E' is found in the Year Book listing all members of the Salesian Society.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Year Book|annuario]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' collected correspondence
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Raccolta delle lettere scritte (talora anche di quelle ricevute) da una persona, spec. da uno scrittore o in genere da un uomo illustre, e il libro in cui sono stampate//. Collection of letters written by or received by an individual, especially an outstanding individual.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Reference to the //Epistolario// (in fact several volumes of such, with critical commentary) is reference to the collection of Don Bosco's letters.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
!!!!''SL'' is ''[fr]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' team.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Gruppo di persone che perseguono un fine comune o collaborano nello stesso settore di attività, anche intellettuale//. A group of people who pursue a common end or collaborate in the same sector of activity ...
!!!''Synonyms:''
committee
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Could occasionally be glossed as 'committee'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
This is a loan term in Italian, from French. Its plural, also in Italian, is //équipes//
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' canonical erection.
!!!''Definition:'' (if a precise one exists)
A juridical act by which a Salesian presence is recognised as a //domus religiosa// or religious house.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
We distinguish between a simple opening and canonical erection. Once a house/community is canonically erected, it then becomes a legitimate juridical person under the authority of a superior. C.608
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[house|casa]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' exclaustration.
!!!''Definition:'' (if a precise one exists)
TRECCANI: // In diritto canonico, la facoltà concessa dalla Santa Sede, o dall’ordinario del luogo, a un membro d’un istituto religioso di diritto papale o diocesano di vivere temporaneamente fuori del chiostro, deponendo l’abito religioso ma restando legato all’osservanza dei voti e dei doveri del suo stato//. In Canon Law, the faculty granted by the Holy See or the Ordinary of a place for a member of a religious institute of pontifical or diocesan right to live temporarily outside the cloister, putting aside the religious habit but still bound to observance of the vows and duties of state.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
It is a form of absence from the community granted by the Superior General or Apostolic See.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' retreat.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //pratica ascetica consistente nel ritiro temporaneo dalle occupazioni ordinarie per dedicarsi alla preghiera e alla meditazione, e in partic. il ritiro compiuto secondo il metodo esposto da sant’Ignazio di Loyola negli Ejercicios espirituales (1548)//. An ascetical practice consisting in temporary withdrawal from ordinary occupations in order to dedicate oneself to prayer and meditation, in particular the method outlined by St Ignatius Loyola in his //Ejercicios espirituales// (1854).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
While the term is sometimes glossed as 'spiritual retreat', the more normal term is simply 'retreat'. Context makes it clear that it is a spiritual exercise.
!!!''Usage notes''
The term 'Spiritual Exercises' is normally restricted to a retreat that follows the Ignatian method.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ritiro]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Exercise for a Happy Death.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
Monthly Recollection
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A spiritual practice that Don Bosco adapted from spiritual and ascetic practice of the time, essentially a monthly examination of conscience followed by confession and communion.
!!!''Usage notes''
The current practice of a monthly recollection has replaced the former practice - and the term.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ritiro]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Eurobosco.
!!!''Definition:'' (if a precise one exists)
Congress of Salesian Past Pupils from Europe
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[confronto]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Past Pupils (of Don Bosco).
!!!''Definition:'' (if a precise one exists)
Originally, boys who frequented the Oratory at Valdocco in Don Bosco's time, hence 'Past Pupils of Don Bosco' is the complete term, still today.
!!!''Synonyms:''
Salesian Past Pupils, Old Scholars, Bosconians, Alumni
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The first local Past Pupils Association was formed in Turin in 1870 for the purpose of organising a yearly feast day in honour of Don Bosco.
After Don Bosco's death, the group continued to do the same in honour of Fr Michael Rua, keeping the same date of June 24. For many years this was the only Past Pupils Association in existence.The date June 24 was in fact a mistaken date, Don Bosco's boys at the time thinking he was named 'John' after John the Baptist.
In 1896, a second Past Pupils Association was formed at Parma (Emilia). Between 1896 and 1908 many similar associations came into existence in places where the Salesian were active. Although not federated, all these groups were inspired by the idea of keeping alive the principles of their Salesian education and working as active Christians in their various walks of life.
In 1908, the idea of forming a world federation was launched, to unite all Past Pupils Associations which had sprung up in Europe and the Americas. in 1909 statutes of federation were drafted and circulated and some 100 local associations formed the World Federation of Salesian Past Pupils.
!!!''Usage notes''
While they always remain officially Past Pupils of Don Bosco, the terms used locally, as indicated in the synonyms above, vary.
With regard to the term 'alumni', the colloquial term 'alums' can be heard in the US. In Britain, Australia and places where British English reigns, 'past pupil' (often capitalised) is more common. The Philippines uses 'alumnus', but one also hears 'Bosconian' in reference to past pupils
There are also //Exallieve delle Figlie di Maria Ausiliatrice// or Past Pupils of the Daughters of Mary Help of Christians.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]], [[Past Pupils Confederation|Confederazione Mondiale Exallievi/e di Don Bosco]].//
There are a series of icons on the righthand side pane:
''House icon'': home (introduction)
''+ icon'': for a new tiddler (not the template, just a tiddler into which you can write any text you like)
''cog icon'': control panel which you would use if setting up your own new wiki
''circled tick icon'': for saving your wiki if you make any change at all (it will save probably to your downloads folder)
''? or help icon'': for help!
There is also a search box beneath the icons. When you type in a term, the tabs beneath will disappear. They can be returned by clicking the x beside the search box
There are a series of tabs on the righthand side pane:
|+Add|if you wish to add a new term |
|Index|gives a list of advanced tools, and 3 dropdown lists you may wish to consult |
|Open|lists any open tiddlers |
|Recent|lists the 100 most recent tiddlers created|
|Tools|controls the icons that appear under the EAO Glossary title|
|More|can be ignored unless you seriously wish to adjust this wiki and know what you are doing|
|Map|you can create your own concept map by linking tiddlers|
|Calendar|imported from Google calendar|
|Contents|A list of all tiddlers in alphabetical order. Really a repetition of Alphabetical order under Index|
|False Friends|Helpful for translators|
|References|explanation of documents referred to in the tiddlers|
[[Introduction]]
[[How is this dictionary/glossary set up?]]
[[Can I add or adjust a term?]]
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
|!Italian |!False friend |!Preferred equivalent(s)|
|ambiente|environment|Could well be, but in the case of something like 'ambiente educativo', given the broader extension of 'educate, educator' in Italian, it may be better glossed with 'setting', or 'spirit' or other (an entire way of being and acting)|
|carta|card|Could be 'card', but might also be something along the lines of 'charter'|
|coerenza|coherence|Usually it means 'consistency' e.g. of viewpoint, Where texture is involved the Italian would say 'consistenza'. Of course 'coerenza' can also mean 'coherence'.|
|collaboratore|collaborator|could be 'collaborator' but might also be 'helper', 'co-worker', 'partner'|
|collegio|college|boarding school (though it could be college)|
|colloquio|colloquium|friendly talk, chat|
|compagno|companion|friend (though it could be companion)|
|condizione|condition|could be 'condition' but often 'situation', 'circumstance'|
|docile|docile|well-behaved, obedient|
|economo|economer|we are stuck with 'Economer General' and 'Provincial Economer, but other cases at local level might employ 'bursar', 'administrator', 'treasurer'...|
|editore|editor|publisher|
|emarginati|emarginated|marginalised, abandoned|
|esercizi spirituali|spiritual exercises|retreat or 'spiritual retreat'|
|fisionomia|physionomy|special character, shape|
|formazione|formation|May well be 'formation' but can also in context be simply 'education'|
|fragilità|fragility|frailty, especially in //fragilità vocazionale//|
|geniale|genial|clever, gifted, smart|
|giaculatoria|ejaculation|invocation|
|globale|global|may mean 'global' but more likely 'overall'|
|incaricato|incharge, in-charge, inCharge|person in charge|
|integrale|integral|rounded, all-round, holistic, complete...|
|irrinunciabile|unrenounceable|'inalienable', or in context, 'essential'|
|itinerario|itinerary|curriculum, 'progress made'|
|lettorato|lectorate|ministry of reader|
|liminalità|liminality|frontier situation|
|linguaggio|language|could often be 'language' but might also be 'expression', even 'vocabulary'|
|missionario/a|missionary|often it should be rendered simply as mission (adj)|
|Monsignore|Monsignor|It could be 'Monsignor' but in English this person is usually not-quite-a-bishop! Better to say 'Bishop X' or 'Archbishop Y'|
|operativo|operative|could be 'operative' but more likely 'practical', 'working...'|
|orfano|orphan|In English an 'orphan' has usually lost both parents. In Italian one can be 'orphaned' of one parent|
|organico|organic|holistic, systematic, complete...|
|organismi|organisms|groups, bodies, entities...|
|passività|passivity|Careful! It might mean 'liabilities' in accounting|
|pastorale|pastoral|Mostly it refers to 'ministry' in our context|
|paternità|paternity|fatherliness|
|patrimonio|patrimony|it could be 'patrimony' but it might also be 'heritage', 'legacy'|
|pedagogia|pedagogy|Often can be rendered simply by 'education'|
|pietà|piety|it could be 'piety' but it might also be 'devotion'|
|presbiterio|presbytery|sanctuary, presbyterium|
|presidenza|presidency|executive group, committe, though 'presidency' seems to apply in the European Union|
|preventività|preventivity|prevention|
|procura|procure (n)|(Mission) (and) (Development) Office; in other words combinations of these|
|professionale|professional|it could be 'professional' but might also mean 'technical' as in the case of some //scuole professionali//|
|profetico|prophetic|it could be 'prophetic' but it might simply mean 'inspired'|
|progetto|project|plan or project, depends essentially on context|
|promozione|promotion|it could be 'promotion' but it might also be 'fostering', 'development' as in 'human development' or 'work' or 'ministry' in the case of //promozione vocazionale//|
|protocollo|protocol|file number|
|radiografia|radiography, ~X-Ray|overview|
|regolamento|regulation|'regulations' in the plural, more likely, especially if with capital 'R'|
|Responsabile maggiore|Responsible Major, Major Responsible|Moderator General|
|ricoverati|recovered|it means people given shelter, or taken to hospital or...|
|rilanciare|relaunch|it could be 'relaunch' but might also be 'reinvigorate'|
|rettorato|Rectorate|term of office of Rector Major|
|santuario|sanctuary|shrine|
|sessennio|sessennium|six year period|
|sinergia|synergy|it might be synergy, but it might also be simply 'teamwork'|
|territorio|territory|it might be territory but would almost always, in Salesian context, be better gloosed as 'local area'|
|urna|urn|casket|
|vicario|vicar|vice-rector, vice-provincial (though it could be vicar)|
|volontariato|voluntariate|'volunteer movement' , 'volunteer group' preferred|
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' apostolic family.
!!!''Definition:'' (if a precise one exists)
''Apostolic'' (in general): the ardent desire to reproduce the apostolic ideal in which “the company of those who believed was of one heart and one soul,…had everything in common, [and] devoted themselves to the apostles’ teaching and fellowship, to the breaking of the bread and the prayers” (Acts 4:35; 2:42).
''Apostolic'' (from the Charter of Identity): an inner dynamism which urges one to gift and service, giving salvific effectiveness to educative and evangelising activity and unifying all of ones activity around this central inspiring theme.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Salesian Family is an apostolic Family. The Groups which make it up are all responsible subjects of the common mission, although to different degrees and in different ways.
Don Bosco founded the Society of St Francis de Sales and the Institute of the Daughters of Mary Help of Christians and set them up as Religious Congregations, by this stage not contemplative but "apostolic". According to the intentions of their Founders, Don Bosco's spiritual sons and daughters, all the other Religious Congregations which belong to the Salesian Family today have a clear apostolic orientation and are part of those Religious Institutes known as "apostolic" institutes.
In virtue of each ones particular vocation, individuals belonging to the distinct Groups are 'sent', thus called to carry out the common mission according to the role they are entrusted with, and their own abilities and possibilities. with regard to canonical norms, the Salesians, the Salesian Sisters and the other Religious Institutes take up the apostolic mandate from the ecclesiastical authority and carry it out in the context of the provincial or local communities which are the primary subject of the mission.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[famiglia carismatica]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' charismatic family.
!!!''Definition:'' (if a precise one exists)
A gift of the Spirit to the Church in view of a mission (//Charter of Identity// Art 5.)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Its deepest and truest roots are found in the Mystery of the Trinity, meaning in the infinite love uniting Father, Son and Spirit, source, model and goal for every human family.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
In such a context we discover still more the importance and fruitfulness of our membership of a charismatic Family, which already recognizes these principles and in its work tries to spread them as a basic platform for every educative, human and Christian endeavour. (Strenna 2003 Presentation)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[famiglia apostolica]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian Family.
!!!''Definition:'' (if a precise one exists)
Don Bosco inspired the start of a vast movement of persons who in different ways work for the salvation of the young.
He himself founded not only the Society of St Francis de Sales but also the Institute of the Daughters of Mary Help of Christians and the Association of Salesian Cooperators. These live in communion with each other, share the same spirit and, with specifically distinct vocations, continue the mission he began. Together with these groups and with others born later we make up the Salesian Family. (C. 5)
!!!''Synonyms:''
apostolic family of Don Bosco, spiritual and apostolic family of Don Bosco
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
For further information cf. also [[Mission Statement|Carta della Missione della Famiglia Salesiana]] and [[Salesian Identity Card|Carta di comunione nella Famiglia Salesiana]] and the most recent document (2012) the [[Charter of Charismatic Identity|Carta di Identità carismatica della Famiglia Salesiana di Don Bosco]]. This document in particular makes it clear that the term 'family' as used in 'Salesian Family' describes the links that connect the various Groups, even though with different intensity. It is not simple affinity, or generic sympathy but an institutional expression of inward, charismatic and spiritual communion. It can be described in terms of different levels.
The full membership list of the Salesian Family is as follows:
# [[Salesians of Don Bosco|SDB Salesiani di Don Bosco]]
# [[Daughters of Mary Help of Christians|FMA Figlie di Maria Ausiliatrice]]
# [[Salesian Cooperators|Cooperatore Salesiano/Salesiano Cooperatore]]
#[[Past Pupils of Don Bosco|Exallievi (di Don Bosco)]]
# [[Past Pupils of the FMA|Exallievi (di Don Bosco)]]
# [[Women Volunteers of Don Bosco|VDB Volontarie di Don Bosco]]
# [[Daughters of the Sacred Hearts of Jesus and Mary|HH.SS.CC Hijas de las Sagrados Corazones de Jesús y de Maria]]
# [[Salesian Oblates of the Sacred Heart|SOSC Salesiane Oblate del Sacro Cuore]]
# [[Apostles of the Holy Family|ASF Apostole della Sacra Famiglia]]
# [[Caritas Sisters of Jesus|CSJ Caritas Sisters of Jesus]]
# [[Missionary Sisters of Mary Help of Christians|MSMHC Missionary Sisters of Mary Help of Christians]]
# [[Daughters of the Divine Saviour|HDS Hijas del Divin Salvador]]
# [[Sisters Servants of the Immaculate Heart of Mary]]
# [[Sisters of Jesus the Adolescent|IJA Irmas de Jesús Adolescente]]
# [[Association Damas Salesianas|ADS Asociación Damas Salesianas]]
# [[Association of Mary Help of Christians|ADMA]]
# [[Catechists Sisters of Mary Immaculate Help of Christians|SMI Sisters of Mary Immaculate]]
# [[Daughters of the Queenship of Mary Immaculate|DQM The Daughters of the Queenship of Mary]]
# [[Volunteers with Don Bosco|CDB Volontari Con Don Bosco]]
# [[Witnesses of the Risen Lord TR|TR Testimoni del Risorto]]
# [[Congregation of St. Michael the Archangel|CSMA Congregation of St Michael the Archangel]]
# [[Congregation of Sisters of the Resurrection|Congregación de Hermanas de la Resurrección]]
# [[Sisters Announcers of the Lord]]
# [[The Disciples - Secular Institute|The Disciples]]
# [[Canção Nova Community|Canção Nova]]
# [[Sisters of St Michael the Archangel (Michaelites)|CSSMA Zgromadzenie Sióstr św. Michała Archanioła]]
# [[Sisters of Maria Auxiliatrix|SMA Sisters of Maria Auxiliatrix]]
# [[Community of the Mission of Don Bosco (CMB)|CMB Comunità della Missione di Don Bosco]]
# The Sisters of the Queenship of Mary Immaculate
# [[Visitation Sisters of Don Bosco (VSDB)|VSDB The Vistation Sisters of Don Bosco]]
# [[The Contemplative Fraternity of Mary of Nazareth (FCMN)|FCMN Fraternidad contemplativa Maria de Nazaret]]
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Normally, in English, the term is capitalised as Salesain Family.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[es]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' FCMN The Contemplative Fraternity of Mary of Nazareth.
!!!''Definition:'' (if a precise one exists)
Public Association of the Faithful
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Founder: Archbishop Nicolas Cotugno SDB (1934-), Archbishop of Montevideo (1994).
Founded: 31 May 1983.
Membership of the Salesian Family, 18 July 2016.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' FLASH.
!!!''Definition:'' (if a precise one exists)
A technical Salesian term for the annual written collection of statistics sent to the General Administration from the provinces.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
EG12 Comunicazione fra segretaria ispettoriale e segretaria generale:...I dati statistici (FLASH) a fine anno
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Records|Ufficio anagrafico e statistico]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' FMA Daughters of Mary Help of Christians.
!!!''Definition:'' (if a precise one exists)
"Through a gift of the Holy Spirit and the direct intervention of Mary, Saint John Bosco founded our institute as a response of salvation to the profound hopes of young girls. He endowed it with a spiritual heritage that had its inspiration from the charity of Christ the Good Shepherd, and imparted to it a strong missionary impulse." (FMA Constitutions art 1)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
This religious family has its origins in the heart and mind of St John Bosco and in the creative fidelity of St Mary Domenica Mazzarello. Don Bosco chose the name “Daughters of Mary Help of Christians” because he wanted a living monument of gratitude to his Madonna.
At the persistent request of many people in Turin and as a result of his own perceptions, Don Bosco resolved to take steps in setting up an institute that would reach out to many poor and abandoned girls. He was inspired to do so from his many contacts with female institutes, his deep Marian devotion, the encouragement received from Pope Pius IX and the many inspirations he had in this regard, through 'dreams' and significant happenings.
It so happened that in the township of Mornese, situated in the hills of Monferrato, a young woman by the name of Mary Domenica Mazzarello was accompanying a group of young women who along with her were dedicated to helping young girls learn a trade, and while doing so these girls were also guided in their faith development.
There were two significant signs conveying the same message: that an educative environment similar to the one for boys at Valdocco, Turin, should be set up for children and young girls. Mary Domenica Mazzarello was a co-foundress who gave life and form to this newly founded institute. On August 5th 1872 the first group of young women, following the example of Mary, in declaring their "Yes" to God's call, committed themselves to be 'helpers' of young people
!!!''Usage notes''
In many if not most English-speaking countries where they are present, the Sisters refer to themselves as 'Salesian Sisters' rather than by the longer title of 'Daughters of Mary Help of Christians'. In German-speaking countries (which also use English) they are more often referred to as 'Don Bosco Sisters'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
'Daughters of Mary Help of Christians' is a shorter form. The complete reference is 'Institute of the Daughters of Mary help of Christians'.
The Institute of Mary Help of Christians "is a living part of the Salesian Family which throughout history relives in different ways the spirit and mission of Don Bosco thus expressing its perennial adaptability. The Rector Major of the Society of St Francis of Sales – as successor of Don Bosco - is its animator and centre of unity" (FMA C. 3).
Reference is made to 'Institute' rather than 'Congregation', when speaking of the organisational entity.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' Don Bosco in the World Foundation.
!!!''Definition:'' (if a precise one exists)
From their website: //un organismo della Congregazione Salesiana che ha come scopo la promozione, il sostegno e lo sviluppo delle Opere e Missioni Salesiane nel mondo// A body belonging to the Salesian Congregation whose purpose is the promotion, support and development of Salesian Missions and work around the world.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The group is based at Salesian Headquarters in Rome.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Direzione Generale (Opere Don Bosco)]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Rector Major's Solidarity Fund.
!!!''Definition:'' (if a precise one exists)
Monies usually sent to The Centre by the provinces and disbursed according to need, directly by the Rector Major (though after hearing from the province where the request comes from).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In practical Salesian language we find the term ''solidarity'' used in reference to aid, mostly of the financial kind, or as represented by NGO, Mission Office activity, or as a 'fund' (e.g. the Rector Major's Solidarity Fund). Perhaps we need to be careful not to overly restrict the term's application in this sense. It is, by now an established principle of Catholic social teaching (//Solicitudo Rei Socialis// no. 40).
In fact, we find in the Salesian [[Charter of identity|Carta di comunione nella Famiglia Salesiana]] a helpful description of Salesian solidarity which is much broader than that of financial aid:
"1. education, which is the highest form of solidarity, conceived of and realised accoring to criteria which Salesian assistance suggests.
2. Civil, social and mission voluntary service, much widespread amongst young people today..
3. Social and political involvement."
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[solidarity|solidarietà]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' fondo Don Bosco. Remains untranslated
!!!''Definition:'' (if a precise one exists)
TRECCANI: (fondo) //Nelle biblioteche, gruppo di libri o documenti riuniti insieme per affinità di argomento ...// In a library, groups or sets of books or documents collected on a particular topic.
A division of the Central Archives referring to material on/by Don Bosco.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
usually lc //fondo// rather then uc //Fondo//, to distinguish from a financial resource or Fund, as in the case, for example of the //Fondo Missioni//, an official channel via the General Administration for distributing mission funds.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ASC]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' formation, education.
!!!''Definition:'' (if a precise one exists)
1. The act of forming.
2. The process of forming.
3. The manner in which something is formed.
4. (Theol): Considered in its essence it is the spiritual extent the human being can reach by perfecting his or her God-given gifts, and by developing the spiritual heritage, both past and present in which he/she finds himself.
!!!''Synonyms:''
education
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Each of the definitions above becomes important for understanding Salesian formation, since it is active (involving agents), a process, a method and clearly has a theological principle involved.
That said, and because it is such a broad topic, it may best be understood by looking at the several particular aspects under which it is treated (initial formation, ongoing formation, personal life plan) amongst others).
If we consider formation from an institutional and ecclesial perspective, we need to include the widest sense of integral formation of the human being (human promotion, education to the faith), then catechism, education more broadly speaking, the catechumenate, for those beginning a life of faith in the Catholic Church, the formation of committed lay people for ministries open to them to exercise. Then there is the question of formation for religious and Apostolic Life, or for Societies of Apostolic Life, Religious formation in general, formation of candidates for diaconate and priesthood...
Salesian formation takes its starting points from both the individual human being involved, and the project which is the Salesian mission as passed on to us by Don Bosco. Seen this way Salesian formation continues the work of the founder, and his spiritual fatherhood, fosters fidelity to the unity of the charism and commitment to its further development, and places the gifts of nature and grace in a balanced perspective. Don Bosco is the model (SDB Constitution 97 makes it clear that Don Bosco is a 'sure guide') but we also remind ourselves (C. 96) that Jesus too 'called his Apostles individually to be with him'). The chief agent of formation is always the individual being formed, and his life experience which he learns from. The method of formation is living and working for the common mission. A valid plan of life is essential for all this to happen.
'To form' someone (seeing formation from the point of view of the helping agent) means to accompany that person until he reaches his full development, putting him in active relationship with the mission which he, along with every other Salesian, is entrusted with. This perspective responds to the question 'formed for what?'.
!!!''Usage notes''
Italian is much more like to speak of //formazione// where English might use 'education', but the terms //formazione// and //educazione// are interchangeable in Italian, and refer especially to the gaining of attitudes and understanding. In the context of religious life we would speak of 'formation'. E.g. initial and ongoing formation. In the context of schooling - 'education' (e.g. as in //formazione professionale, formazione dei giovani//)
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The 'Formation of the Salesians of Don Bosco' is also the title of the Salesian //Ratio fundamentalis//
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Centro di formazione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' vocational/technical education.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
It may not always refer to 'occupational' training or education - could be straight 'technical.' //Formazione, Formazione Professionale// are technical terms in Italian education and educational legislation.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[TVET]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[ja]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Study, learning science.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
This term is essential for understanding the various terms used for our educational works in Japan. The romanised form and the Chinese ideograph are used here as part of the explanation. If we add -en (or -in), meaning essentially a garden or pretty place, but then a building, we get //gakuin// 学院 or school, hence //Salesio gakuin//, Salesian school. //kyu-gaku// 共学 is together-learn, or co-education. //Shugaku// would be primary school (school for small ones). //Kutugaku// is Senior High, a three year course. //Senmon gaku// (from //senmon//, special) is a Vocational College. //Daigaku// (//dai//, big) is university and //daigakuin// a postgraduate course.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Garelli, Bartholomew.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A Salesian traditional story not recounted before the writing of the //Memoirs of the Oratory// in the mid 1870's but first recounted in Bonetti's serialized version in the Salesian Bulletin 1879. The story lends belief to the symbolic date of December 8th for the beginning of Don Bosco's work. In the original draft for MO Don Bosco had begun to write an 'N', not a 'G' for the surname. Did this mean Nome, or was it another surname? For the purposes of the story it doesn't matter.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Historical Outline|Cenno Istorico]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' The Generala.
!!!''Definition:'' (if a precise one exists)
A 'modern' correction facility for juveniles built in 1845 as part of King Charles Albert's reforms. It was located some 10 miles south west of Turin, on the road to the little town of Stupinigi.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Loitering, vagrancy and begging accounted for over 50% of the cases referred to the Generala. On the whole, it could be said that in the 1840's Turin was a city of 'poor and abandoned' rather than criminal juveniles.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' recreation park.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco employed this term occasionally for public authorities when describing the playground at the Oratory. It was a term in current use for playgrounds at the time but represented a different concept - a small space usually, where youngsters stood around in small groups playing relatively non-physical games under a teacher's supervision.Don Bosco's idea of the playground was very active, where boys could choose their own games, and where the teacher was expected to take part actively, without failing in his/her supervisory role. DB himself would appear at most recreations - he did so until the 1860'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[oratory|oratorio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' secondary school.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Nell’attuale ordinamento scolastico italiano, corso di studî superiore, costituito da un biennio (quarta e quinta ginnasio), cui si può accedere dopo aver conseguito la licenza di scuola media, e al termine del quale si accede al liceo classico; fino al 1940 esistevano due corsi di ginnasio, uno inferiore, di tre anni, corrispondente alla successiva scuola media, e uno superiore, rimasto nell’ordinamento attuale, in cui si intraprende lo studio del greco//.
In the current Italian school system, a course of higher education, consisting of a two-year course (fourth and fifth 'gymnasium'), which can be accessed after obtaining a middle school certificate, and at the end of which one begins upper secondary; until 1940 there were two secondary school courses, one lower, of three years, corresponding to the subsequent middle school, and a higher one, remaining in the current system, in which the study of Greek is undertaken.
But the sense in which it appears in texts relating to Don Bosco's time or the 'pre-1940 period' referred to above, namely, the five year course of secondary studies called //ginnasio// in the Casati Reform of 1859.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' community day.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Established as a regular weekly practice in Salesian communities from GC23 onwards.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Viganò ACG348:... Con il CG23 si indicato anche il giorno della comunità
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[community|comunità]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en ]'' (Target Language, as above) <br>''Glossed as:'' young people.
!!!''Definition:'' (if a precise one exists)
See discussion below in Linguistic notes.
!!!''Synonyms:''
//adolescenti// (adolescents), //ragazzi// (youngsters) ...
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
For DB the term had a male only reference. But depending on the context it was a term that might have much more attached to it. An example comes from the famous saying //Ho promesso a Dio che fin l'ultimo mio respiro sarebbe stato per i miei ''poveri giovani''// (I have promised God that I will be for my ''poor boys'' until my last breath). N. Cerrato (//Vi Presento Don Bosco// LDC 2005) points out that Desramaut's comment that the original formulation employed //poveri orfanelli// rather than //poveri giovani// does not thus discredit the MB version (Vol 18). DB, he says, was almost certainly speaking Piedmontese where he would have used //povri fieuj// not the unusual //povri orfaneij//. //povri fieuj// translates as// ragazzi// or //giovani// in Italian but carries the Piedmontese meaning of 'poor and abandoned' and probably orphaned.
!!!''Usage notes''
Expect, especially in texts wrtten by Don Bosco, to find a range of terms such as //giovanetto//, and/or //giovanotto//. Indeed, a range of terms that seem largely interchangeable: //fanciullini//, //fanciulli//, //giovani//, //giovanetti//, //giovinetti// and even //orfanelli//, though this latter is more precisely of the 'poor and abandoned' type. Opposed to these would be //giovani grandicelli// which, in at least one text by DB, is determined as being from 16-30 years of age.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
It is difficult to give precise age ranges for the various Italian terms relating to youth. Many texts talk about //bambini//, //adoloscenti// and //giovani// in the same sentence, suggesting there are three distinct age ranges, whereas to say 'children and youth' in English sounds a bit forced: we would normally just talk about 'young peopple', 'teenagers' and 'small children' if we want to incude the under tens.
In today's understanding in Italy, a //bambino// could be 2-10 years, a //ragazzo// from, say, 11-19 years, while a //giovane// might be from 20-30 years! This means that the plural term //giovani// is far more extensive than its English equivalent 'young people'.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[poor and abandoned|povero e abbandonato]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' globalisation.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Nel linguaggio dell’economia, g. dei mercati, fenomeno di unificazione dei mercati a livello mondiale, consentito dalla diffusione delle innovazioni tecnologiche, specie nel campo della telematica, che hanno spinto verso modelli di consumo e di produzione più uniformi e convergenti; anche, le conseguenze politiche e sociali di tale unificazione.// In the language of economics, g. of the markets, a phenomenon of unification of the markets on a global level, permitted by the spread of technological innovations, especially in the field of telematics which have pushed towards more uniform and convergent consumption and production models; also, the political and social consequences of this unification.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
When both //globalizzazione// and //mondializzazione// appear together in our texts (e.g. ACG 387 p. 15) we have to assume they are synonyms but distinguishable.
!!!''Usage notes''
It is a relatively new term in Salesian usage - only since Vecchi. There are attempts to distinguish the two concepts such that //mondializzazione// emphasises the existence of the nation-state and its need to have arrangements with other nation-states. The existence of the UNO then becomes an example of //mondializzazione//.
//Globalizzazione// appears to have a more negative feel about it involving the worst aspects of economy, internet and communications, language etc.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[sw ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Harambee. Untranslated.
!!!''Definition:'' (if a precise one exists)
Harambee is a Kenyan tradition of community self-help events, eg. fundraising or development activities. Harambee literally means "all pull together" in Swahili, and is also the official motto of Kenya and appears on its coat of arms.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Harambee events may range from informal affairs lasting a few hours, in which invitations are spread by word of mouth, to formal, multi-day events advertised in newspapers. These events have long been important in parts of East Africa, as ways to build and maintain communities.
Following Kenya's independence in 1963, the first Prime Minister, and later first President of Kenya, Jomo Kenyatta adopted "Harambee" as a concept of pulling the country together to build a new nation. He encouraged communities to work together to raise funds for all sorts of local projects, pledging that the government would provide their startup costs. Under this system, wealthy individuals wishing to get into politics could donate large amounts of money to local harambee drives, thereby gaining legitimacy; however, such practices were never institutionalised during Kenyatta's presidency.
!!!''Usage notes''
Used by Salesians since 1993 to refer to a missionary gathering, usually of young people, for mission animation.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Normally capitalised in English since it refers to an event.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[confronto]].//
!!!!''SL'' is ''[es]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' HDS Daughters of the Divine Saviour.
!!!''Definition:'' (if a precise one exists)
Female Religious Institute of Diocesan Right, founded by Salesian Bishop Pedro Arnoldo Aparicio (1980-1992), as catechists and teachers they are at the service of poor children and youth whom they aim to educate by the Preventive System. Don Bosco's motto, Da mihi animas caetera tolle (give me souls, take away the rest), has become Oportet Illum regnare (it is necessary for Christ to reign!).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
"Through our educative and pastoral mission we contribute to the mission of salvation at the service of the Particular Church and parishes, dedicating ourselves especially to education of young girls and young women. the Institute achieves these aims principally through religious education and the apostolate of catechetics. Our life and our evangelising and educational activity gives Mary a special role. We entrust ourselves to Her as the “Help” of children and youth.
The HDS live an attitude of spiritual childhood made up of simplicity and serene joy. Bethlehem indicates our spiritual road: humility, poverty, not desiring great things, making ourselves always available, opening our souls, our heart and our arms to children and young people, in a Salesian style. A special devotion to the Child Jesus helps the HDS to achieve this meekness and humbleness of heart as taught by Jesus.
The witness to poverty, already in the original founding group and written into our purpose of service of children and girls of ordinary people, especially the needy, characterises our commitment and witness.
An interesting element of formation and apostolic activity is the collaboration with the Salesians. In different countries we share responsibility with the Salesians in educational and social works".
Date founded: San Vicente (El Salvador), Christmas 1956
Date admitted to the SF: 5th February 1987
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[es]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' HH.SS.CC Daughters of the Sacred Hearts of Jesus and Mary.
!!!''Definition:'' (if a precise one exists)
A female religious institute of Pontifical Right.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Founded by Fr Louis Variara at Agua de Dios 1904. Members of the Salesian Family.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
On the righthand side, under ''Salesian Dictionary and Glossary'', there is a search box. For example, type in any of the following: //sistema// or //preventivo// or //system// or //preventive// or //sistema preventivo// or //preventive system//. You could also type in //Don Bosco//. In other words, a term can be found by typing in one or more, or all of its words, or even a likely associated word or phrase, in whichever language pairs the glossary contains (in this case mainly Italian and English).
The resulting item will appear on the lefthand side once you select one of the matches that appears below the search box. You can see how it is set out for any term:
* an ''SL'' (source language) indication, in this case ''it'';
* a ''TL'' (target language) indication, in this case ''en'';
* how it is ''glossed'' (=translated), in this case "preventive system";
* a ''definition'', if we can find an authoritative one;
* any ''synonyms'', in this case none;
* a ''comment'' with any other information, and this can provide a wealth of background information to a Salesian term;
* ''usage notes'' where some suggestions can be made for how to employ the term;
* ''linguistic notes:'' part of speech, other lexical or inflectional features that may be of interest;
* a ''citation'' from some document;
* in some cases a ''see also'' link which would take you to a closely related term. If it just says //related term// in italics, none has been added yet, and clicking on it will ask you to create one. Best to ignore it though if it just says 'related term'.
!!!Tags
You will also note other bits of information in little coloured pills at the top: these are tags. One tag is obvious: //Dictionary entry//.
Other tags may include a ''<span style="color:red"> red</span>'' tag reading 'EAO'. This means that the term has its origins in the EAO Region, or is specifically in use in that region.
There may also be a ''<span style="color:green">green</span>'' tag indicating that the term may be a 'False Friend'. This is of assistance to translators who may unconsciously use a calque, a word or phrase borrowed from another language by literal, word-for-word or root-for-root translation. e.g. //editore// glossed in English as 'editor' when it really means 'publisher'.
An ''<span style="color:orange"> orange</span>'' //SC// reference (1-31 categories at present). This stands for //Semantic category// and is an attempt to categorise all Salesian-referenced terminology within a limited, controlled set of concepts or categories, which is where this glossary becomes more like a Term base or even an ontology. You can always go to the Index tab and check the list of //Semantic categories// and what they stand for. ''This is a bit experimental and open to change in future editions''. Obviously, some terms have much wider application, and they may simply be categorised as 'Concept' or some other generic category.
(If you were to put //Salesian// or //Consecrated life// in the search box, you will see a 'Salesian.html' and 'Consecrated Life.html' tiddly, and either or both of these will provide more information about a possible ontological approach to terminology).
Another tag is the ''<span style="color:purple"> purple</span>'' //TS// reference (5 categories). This stands for //Term status// and indicates the status of the term in Salesian discourse. From the Index tab you can check what each status item means by clicking on any of the dropdown list of five.
Some terms carry a ''<span style="color:#31dfe2"> blue</span>'' Alert! tag. This indicates that the term either remains a special challenge for translators, or has been found in non-standard forms (meaning that it is unlikely to be found in a dictionary in that form and might be better glossed oetherwise).
There may well be other coloured tags. They will be obvious enough if they appear.
[[Introduction]]
[[Can I add or adjust a term?]]
[[Explaining the righthand side pane]]
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' charismatic identity.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
Salesian identity, vocational identity
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Synonymous with 'Salesian identity' or the //indole propria// or special character of the Salesian. 'Vocational Identity' is an additional term employed frequently in our texts. In specific terms, the charismatic identity of Salesian of Don Bosco is to make welcome and to share the life of the young especially those who are poorest. It was a term often employed by Fr Viganò.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Vecchi ACG355: ...necessario avere: comunità religiose con una chiara identità carismatica, assimilata e vissuta,
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[charism|carisma]].//
!!!!''SL'' is ''[es]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' IJA Sisters of Jesus the Adolescent.
''TL'' is ''[it]'' (Target Language, as above) <br>''Glossed as:'' IJA Suore di Gesù Adolescente.
!!!''Definition:'' (if a precise one exists)
Female religious Institute of Diocesan Right, founded by Salesian Bishop Bishop Vicente Priante on 8th December 1938. The Congregation seeks to live out its mission by offering an evangelising response to the concrete problems of Particular Churches: through popular education, family ministry, social activities, and special attention to children and the elderly.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Congregation began under the name of "The Little Sisters of Jesus the Adolescent” which officially began on 8th December 1938. A group of young girls, refused entry to other Congregations because their parents were in irregular marriages, were ready to respond. The first seven of the Sisters made their profession in 1939. They worked at the seminary in Campo Grande and the hostel for the elderly and abandoned. They ran two parish schools in Corumbá as well as a hostel for the elderly and abandoned. Bishop Priante died on the 4th December 1944. The Sisters had lost their father just six years after the foundation. His successor, Bishop Chaves, also a Salesian, became their guide,and in 1952 entrusted them to Mother Josefina FMA, who was the superior until 1967. A serious crisis followed which reduced their numbers from 74 to 28, but with the General Chapter in 1975 they reorganised themselves.
Date founded: Campo Grande, 8th December 1938
Date admitted to the SF: 23rd December 1988
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Immaculate Conception.
!!!''Definition:'' (if a precise one exists)
A dogma of the Church concerning Mary's singular grace in being conceived without sin proclaimed on 8th December 1854.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Often, in Don Bosco's and subsequent Salesian reference, the term 'Immaculate Conception' is shortened to 'The Immaculate'.
The dogma and the event of its proclamation are especially significant in Salesian history. In the first 20 years of his life, before he had settled on the term [[Help of Christians|Auxilium Christianorum]], his reference was always to Mary Immaculate. The 8th December, a good ten years and more before the dogma was proclaimed, was the date he assigned to the start of his work. Cf. [[Bartholomew Garelli|Garelli, Bartolomeo]].
The proclamation date was also the date Dominic Savio wrote up his simple programme of life under Don Bosco's tutelage at the Oratory. The Sodality of the Immaculate Conception, of which Dominic was a co-founder, became a school of preparation for boys who eventually were the beginnings of the Salesian Society. At Mornese, the Daughters of the Immaculate group of women were the basis for what became the Salesian Sisters.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Help of Christians|Auxilium Christianorum]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' person in charge.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //La persona, l’ente, o altri, che ha ricevuto l’incarico di fare qualche cosa.// The person, body or other who been assigned to look after something.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
ALERT! From time to time one see this glossed as English as 'incharge' or 'in-charge' as a noun. In fact this is a calque, a direct translation of the Italian into a word that is unknown in English (i.e. it does not exist in any dictionary).
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
~PGmanCapitolo 4: ..L'incaricato dell'Oratorio-Centro Giovanile
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' inculturation.
!!!''Definition:'' (if a precise one exists)
SOURCE UNKNOWN: The integration of Christian faith in human culture(s).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Note that this is distinct from 'enculturation' in English, but that there are linguistic problems associated with the term in translation (see below).
The term begins to appear in Church documents from about 1979 onwards, with a description from Pope John Paul II who saw it, in a comment he made to the Pontifical Biblical Commission, as a term which expressed very well one aspect of the great mystery of the Incarnation.
Its appearance in Salesian vocabulary can be owed in a particular way to representatives from Bangalore (India) at the Special General Chapter 20 (1971-72), which is interesting since it has been claimed that the term really came into existence in 1973 from a Protestant theologian teaching in New York!
The Jesuits took it up at their 32nd General Chapter (1975) translating it as //inculturatio// (since Latin morphology does not permit 'enculturatio'). The term appears often in the Italian phrase //inculturazione del Vangelo// (inculturation of the Gospel).
!!!''Usage notes''
While the noun form works easily enough in English, there is still some resistance to it as a verb.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Italian only has the word// inculturazione// since, like Latin, en- is not a prefix in that language. It may use the word //socializzazione// to express what English means by 'enculturation'. However, TRECCANI's definition of //inculturazione// is: [der. di //cultura//, col pref. //in//-, per traduz. dell’ingl. //enculturation//]. – In psicologia sociale, assimilazione, da parte dell’individuo, della cultura del gruppo sociale cui egli appartiene, durante il processo di socializzazione, che implica adattamento e dialogo.
And therein lies the problem.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
[[Is this a dictionary, glossary or term base?]]
[[How is this dictionary/glossary set up?]]
[[Can I add or adjust a term?]]
[[Explaining the righthand side pane]]
You will note that the //Salesian DIctionary and Glossary// adds a subtitle //with particular reference to the EAO Region//. The intention is that you can find Salesian terminology that originates in this region, or terminology that is used by the Salesian Family in this region but may not be used elsewhere. It is a work in progress. If you click on the red EAO tag on a term, e,g, [[ASMOAF|ASMOAF Australian Salesian Mission Oversaid Aid Fund]], it will list all the other EAO tagged terms as well, and you could select any one of them for further info.
If you ever want to return to this introduction, and it is not visible, just click on the house icon on the righthand side.
Since this entire file is yours (once you open it and are reading it as you are now), you can do whatever you like with it and read up how to make changes. Even if you opened it on the sdb.org site, once open you can save it to your own disk by clicking the red tick with a circle around it on the rightand side panel. If you do that, it would be wise to change the name of the file you are now reading so that this version always remains untouched for your future access.
Alternatively, just use it as it is and make no changes. It will work forever (or however long your computer lasts!).
Enjoy!
!!Dictionary, Glossary or Term base?
A //dictionary// is a compilation of words, their meanings and usages. ''So yes, this is certainly a dictionary''.
A //glossary// is a collection of words, a word list, if you like, with the associated meanings of the words listed. In any given //glossary//, the words may relate to specific subjects, texts, language or dialect. Another way to describe //glossary// is a brief dictionary, alphabetised for quick reference. ''So yes, this is a glossary as well, especially if you go to the 'Contents' tab'' and look at the complete list of words from A-Z or 1-10.
''For the purpose of translation'', //glossaries// contain key terminology in the source language in addition to translations (glosses) for each term in one or more target languages. A glossary can contain other metadata such as definitions, context, part of speech, semantic categories, term status ... ''and what you have here is a glossary in this extended sense as well.''
You will often hear the words //term base// and //glossary// used when preparing projects for translation, so what is the difference?
//Term base// is a contraction of “terminology database”; it could also be described as a database containing approved terminology (or terms). A //glossary// can be formatted and imported into a term base.
''In some respects, then, this //glossary// is leaning towards a term base.''
[[Introduction]]
[[How is this glossary set up?]]
[[Can I add or adjust a term?]]
[[Explaining the righthand side pane]]
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' province.
!!!''Definition:'' (if a precise one exists)
C. 157 The province unites the different local communities in one large community. It is canonically erected when the necessary and sufficient conditions exist for promoting in a specific juridical circumscription the life and mission of the Congregation with the autonomy that belongs to it according to the Constitutions.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Salesian English has chosen the more widely known term 'province' to designate what is known in a tradition stemming from Don Bosco himself as //ispettoria// in Italian.
In his earliest Constitutions DB made no specific provision for establishing 'provinces' as we understand them (i.e. territorial divisions under a canonical major superior), but did divide the Society as it was then into four 'inspectorates'. Rome called this an 'uncommon practice' and requested 'provinces' with due ecclesiastical (Holy See no less!) permission. Don Bosco continued to argue that Pope Pius IX had recommended the use of terms more consistent with the spirit of the [secular] times: therefore, rather than call our houses 'monasteries', he suggested the term 'house, school (//collegio//), hostel or hospice (//ospizio//), or orphanage; likewise, not 'father general', but 'rector major', not 'prior', or 'guardian', but 'director', not 'provincial or province', but some equivalent term.
The idea won out, stuck and was reinforced by early General Chapters.
Quite possibly for reasons of the same kind that were used by Don Bosco for choosing 'inspectorate', Salesians in an English-speaking context decided that this latter term would be inappropriate for them and chose 'province' instead. It is worth noting that in Spain there is a preference for //provincia// rather than //inspectoría//, and that France prefers 'province' also.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[visitatoria]] [[delegazione]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' ISS Institute for Salesian History.
!!!''Definition:'' (if a precise one exists)
ISS website: //L’Istituto Storico Salesiano (ISS) è un dipartimento della Direzione Generale Opere Don Bosco dal 1981. Costituisce un servizio scientifico organizzato dalla Società Salesiana per scopi di studio e di ricerca sulla ricca eredità spirituale ed educativa lasciata da don Bosco e sviluppata dai suoi continuatori. // ISS has been a department of the General Administration of the Works of Don Bosco since 1981. It is a scientific service organised by the Salesian Society for the purposes of study and research into the wealth of spiritual and educational legacy left by Don Bosco, and developed by those who have followed him.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
As well as purposes defined in the Statutes (1. //Mettere a disposizione nelle forme idealmente e tecnicamente valide i documenti del ricco patrimonio spirituale lasciato da don Bosco e sviluppato dai suoi continuatori. 2. Promuoverne nei modi più congruenti lo studio, l'illustrazione e la diffusione//), the ISS is called upon to continue the half-yearly publication of the series “Ricerche Storiche Salesiane” and implement the decision of the 26th General Chapter regarding Salesian sources, “Let the Rector Major and his Council see to the publication and translation of a collection of the principal Salesian sources”.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ACSSA]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' (religious) institute.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //nel linguaggio eccles. usuale (non giuridico), denominazione generica delle congregazioni religiose (con voti semplici) e delle società senza voti i cui membri sono laici//. In ordinary (non-juridical) ecclesiastical language, a generic reference to religious congregations and societies without vows whose members are lay people.
!!!''Synonyms:''
institute of consecrated life, religious order, religious congregation
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
'Institute' is the more general term used in Canon Law applied to groups formed around a particular charism. Synonymous terms are 'institutes of consecrated life', 'religious orders', 'religious congregations'.
An 'Order' is, technically, a group taking solemn vows. A Congregation's members take simple vows.
!!!''Usage notes''
The Salesian Sisters (FMA) normally refer to themselves as an Institute. SDB's more often than not call themselves a Society or a Congregation.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
In addition to the term 'religious institute', expect to find, in Salesian usage:
* //istituto clericale// or 'clerical institute, a term taken directly from Canon Law. indicating that the service of government of the community, in the Institute's tradition, is entrusted at all levels to a confrere who is a priest.
* //istituto di diritto pontificio// or 'institute of pontifical right', which gives the society an exemption, which is not to be seen in negative terms as 'not' being responsible to the local ordinary, but in positive terms as fostering the unity of the Congregation worldwide. It also underlines our availability of service to the universal Church.
* //istituto magistrale// or 'teachers college'
* // istituto Ratisbonne// or 'Ratisbonne Institute', Salesian seminary and study centre in Jerusalem which used be located at Cremisan near Bethlehem. Often we see 'Salesian Monastery Ratisbonne' in the official title - this is to fulfil Israeli law regarding its financial status.
* //Istituto Salesiano per le Missioni// or 'Salesian Missions Institute, The juridical entity known as the //Istituto Salesiano per le Missioni// (Salesian Missions Institute), located at Turin-Valdocco, Via Maria Ausiliatrice no. 32, was the wish of Bl. Philip Rinaldi, 3rd Successor of Don Bosco.
* //Istituto Secolare// or 'Secular Institute', Amongst the many possible forms of Religious Life in the Church, the Secular Institute is a contemporary form. Part of Consecrated Life, members of a Secular Institute profess the evangelical counsels discretely, almost in hidden fashion by contrast with the visible manner of Religious profession.
* //[[Istituto Storico Salesiano ISS|Istituto Storico Salesiano ISS ]]// or 'Salesian Historical Institute
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[congregation|congregazione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' IUS. Salesian Institutes for Higher Education
!!!''Definition:'' (if a precise one exists)
The term stands for study centres such as the colleges, or centres for higher studies that are guided and administrated by the Salesian Congregation (the Salesians of St. John Bosco) around the world: 30 centres in 18 American, Asian and European countries. IUS does not include all the other university academic Salesian centres that are specifically meant for the ecclesiastical formation (philosophy and theology) of members of the Salesian Congregation.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
IUS was simply an acronym until 2001 where, until then, it was the acronym for //Istituzioni Universitarie Salesiane//. The letters have been retained, but the preferred expanded term no longer directly relates to them acronymically, at least in English, and the term is now officially stated in its English version rather than in Italian. This phenomenon of retaining an initialism but changing the meaning behind it can also be found in [[ANS]].
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[youth ministry|pastorale giovanile]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[es]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' JTM Jóvenes del Tercer Mundo. Remains untranslated
!!!''Definition:'' (if a precise one exists)
From website: //Jóvenes del Tercer Mundo (JTM) es una ONG de Desarrollo comprometida con la educación de los jóvenes en los países menos favorecidos a través de proyectos de cooperación que inciden en la formación integral.// Jóvenes del Tercer Mundo (JTM) is an NGO committed to the education of youth in less developed countries through cooperation projects influencing integral formation.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Means 'youth of the third world'. Officially recognised by the Interior Ministry since December 1988, the centenary of the death of Don Bosco. Today it has numerous local centres, spread throughout the Salesian provinces in Spain. The Headquarters is in Madrid. From there it organizes campaigns of support and fosters a Christian commitment in a serious struggle against the causes of poverty and social marginalization in the world. JTM is recognised as one of the major Mission Offices for the Salesian Society, working in collaboration with the Centre in Rome.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[solidarity|solidarietà]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' ecstasy of action.
!!!''Definition:'' (if a precise one exists)
SOURCE UNKNOWN: Going out of oneself towards the other.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Originally a term from St Francis de Sales. The term was taken up again by Fr. Viganò in AGC 332 and 338. He suggests it is the interior side of the //da mihi animas//. Action sanctified by prayer. It is the Salesian interpretation which leads to art. 12 of the Constitutions: 'contemplative in action'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Viganò ACG308: ...San Francesco di Sales soffermandoci con predilezione sulle sue riflessioni circa 'l'estasi dell'azione'.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[da mihi animas cetera tolle]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' lay (person).
!!!''Definition:'' (if a precise one exists)
(1) In contrast to ecclesial or religious (as in 'lay power contrasted with 'religious power').
(2) The identity of the Christian without any further additions. That which pertains to the Christian people.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In the 19th century and for a good part of the 20th, throughout the Western world, the concept of 'lay' had a strong accusatory character in reference to Church and religious symbols. This 'lay' tendency was especially marked in France and is still very much present in the French legal system and culture.
Within the ecclesiastical context, 'lay' includes women and men religious who are not priests (not part of the hierarchical structure, therefore). In this case it is a positive concept, and enables us to speak of lay consecrated, the layperson who has marked him or herself in relation to God by a public or ritual act (consecration).
It is worthy of note that this term was used by DB himself, e.g. in the first constitutional text 1858 on the scope of the society. It predates the term coadjutor and in fact in that text is more a reference to what DB called his salesiani esterni (lay people living in the world with his spirit) than it is to coadjutors.
!!!''Usage notes''
There is also a concept of //laïcité//(French), laicità (Italian), occasionally rendered in English as 'laicity'. This English term is not a happy one!
English may prefer 'lay state' but this would not capture the sense of the word as used by Fr Viganò for example. Hence we have to stay with 'laicity'. Fr Viganò offers three levels of meaning to the term - the most general being that of the universal condition of creation, a second level being that of the Church's mission, and the third as a lay form of religious life, the Salesian Brother.
The problem here is that the concept (as understood from French society in particular) is more understood in terms of separation of Church and State, so its application in the ecclesiastical (and Salesian) context is a very restricted one and would not be well understood even by many Salesians.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
RATIO: ...presente la molteplicità di possibilità per vivere in Congregazione la laicità consacrata
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[coadjutor|coadiutore]], [[extern Salesian|salesiano esterno]]..//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' Brother, Coadjutor.
!!!''Definition:'' (if a precise one exists)
Term used in the Year Book
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Coadjutor|coadiutore]], [[Year Book|annuario]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' work and temperance.
!!!''Definition:'' (if a precise one exists)
Motto of the Salesian Society, originally expressed in Latin as //labor et temperantia//
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco called it //la parola d'ordine e il distintivo del salesiano// (MB XII, 466) i.e. the term which is most distinctive of the Salesian, his badge, if you like.
In contemporary Salesian discourse it belongs to the wider notion of [[asceticism|ascesi]] and the exercise of apostolic charity, which requires detachment, renunciation, sacrifice. An entire Constitution (C. 18 of the SDB Constitutions) is devoted to the concept, where it speaks of 'tireless work' and the 'strength to control his heart, to master himself and remain even-tempered'. The [[Charter of identity|Carta di comunione nella Famiglia Salesiana]] speaks of an asceticism of humility, of mortification, of courage and patience, and even of complete abandonment to God.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
"Work and temperance will make the Congregation flourish", whereas the seeking of an easy and comfortable life will instead bring about its death. (BM 12, 338)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[CSMA Congregation of St Michael the Archangel]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' lectio divina. Remains untranslated.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term is not usually translated. It literally means 'divine reading'. It has a long pedigree in the Church's experience.
The term refers in particular to a way of reading the Word of God (hence the 'divina') directly or via commentaries. lectio divina has more recently been encouraged in Salesian spirituality, especially by Fr Chávez.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
ACG385, Guidelines of vocational frailty: ˝l'esperienza della preghiera personale, l'esercizio della lectio divina, l'adorazione eucaristica ···˝·
Chavez ACG380: ...Indicare per le case di formazione la metodologia e la pratica della Lectio divina.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' reader, lector.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Note that English does not attempt to call it 'lectorate'. The one who takes on this ministry is called //lettore// or 'Reader'.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[acolyte|accolitato]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Catholic Readings.
!!!''Definition:'' (if a precise one exists)
A periodical publication of small books written for common people, of an apologetic nature, and published by Don Bosco.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Catholic Readings were really the initiative of Bishop Luigi Moreno of Ivrea, but he saw Don Bosco as the man who could carry the project forward, as was in fact the case. It began publication in March 1853.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' libellus supplex
!!!''Definition:'' (if a precise one exists)
The Libellus is the written request with which the Postulator, in the name of the petitioner, officially asks the competent Bishop to initiate the cause on the virtues or the martydrom of the Servant of God (Instruction //Sanctorum Mater//, 2007)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Postulator General|Postulatore Generale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' logo.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Not to be confused with the //stemma// or Salesian coat of arms. The logo is of the General Administration.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian Holy Places.
!!!''Definition:'' (if a precise one exists)
A reference to the areas where DB was born and grew up and ministered - Colle, Chieri, Turin etc.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Our Lady.
!!!''Definition:'' (if a precise one exists)
The Virgin Mary
!!!''Synonyms:''
Madonna (in other words untranslated)
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A favourite term of Don Bosco's, which continues to our own time, for Mary.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
In origin the term was used in Italian (before DB's time) to mean what today is //Signora//, or a polite reference to a lady. Today it is always seen in reference to Mary. It will often be simply 'Our Lady' in English, or it may remain untranslated.
!!!''Citation''
DBCircolari: ..Né mancate di raccomandare ai giovani allievi che siano buoni, divoti della Madonna
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Auxilium Christianorum]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' novice director.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
Master of Novices, Novice Master, Director of novices
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
Officially novice director or director of novices (may be capitalised, does not need to be), but people still commonly refer to the novice master.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[formation|formazione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Mamma Margaret.
!!!''Definition:'' (if a precise one exists)
Mother of St John Bosco and regarded as the originator of the Salesian family spirit.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
It is important not to generalise the term family spirit which each Congregation lays claim to, but to retain the historical individuality of the Salesian family spirit as experienced with Mamma Margaret at Valdocco, as it is one of the fundamentals behind loving-kindness in the Preventive System.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
We may find a spelling variant in English, where some use 'Mama' instead of 'Mamma'
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[loving-kindness|amorevolezza]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en ]'' (Target Language, as above) <br>''Glossed as:'' District.
!!!''Definition:'' (if a precise one exists)
GIRAUDO: District or administrative division
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Sardo-Piedmontese Kingdom at the time of Don Bosco was made up of //Divisioni// (corresponding to the French //Départments//); every //Divisione// was divided into //Province//; every //Provincia// was divided into //Mandamenti//, and every //Mandamento// was divided into //Comuni//. For example: Piedmont was made up of 5 //Divisioni// (Turin, Novara, Alessandria, Cuneo, Nizz Mare): The //Divisione// of Turin was made up of 5 //Province// (Turin, Aosta, Biella, Ivrea, Pinerolo, Susa); the //Provincia// of Turin was made up of 30 //Mandamenti//. Each //Mandamento// had its own judge.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Su tal proposito io trascrivo la giudiziosa relazione scritta dal suo maestro don Allora sacerdote Alessandro, tuttora maestro comunale di questo capoluogo di mandamento.(From DB's //La Vita del giovanetto Savio Domenico//)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Comune]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' martyrdom.
!!!''Definition:'' (if a precise one exists)
(1) General: the state of one who endures suffering and death on behalf of belief, principle, a cause.
(2) "Martyrdom is not something that takes place on the spur of the moment" (Pius XII, AAS 32 1950, p. 958). It is not brought about by the executioner but is a grace worked by the Spirit. Martyrdom is a vocation and is prepared for in mysterious fashion by the whole of life. (Vecchi, AGC 368).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[protomartyrs|protomartire]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Mazzarello, Mary Domenica.
!!!''Definition:'' (if a precise one exists)
Co-foundress of the Daughters of Mary Help of Christians with Don Bosco.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
1837-1854. Co-foundress of the Daughters of Mary Help of Christians with Don Bosco. Canonised 24th June 1951. In 1981 on the centenary of St Mary Mazzarello, Fr Vigano wrote a special letter called 'Rediscovering the Spirit of Mornese'.
!!!''Usage notes''
We usually anglicise the first name only, Mary. The term often appears in its Italian form entirely, and Maria Domenica is the form with which most people refer to her when using Christian name only.
The term 'Mother' is applied usually to her and to other superiors (provincials and those at world administration level). Today many women religious prefer not to use the term 'Mother', but it is still used for the Superior General of the Salesian Sisters at least.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[FMA|FMA Figlie di Maria Ausiliatrice]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Biographical Memoirs.
!!!''Definition:'' (if a precise one exists)
An expanded biographical narrative concerning Don Bosco, written in a fairly chronological order and amply documented. (Cf Lenti, //Don Bosco History and Spirit// Vol 1, p. 89)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
One of Don Bosco's biographers, Fr Lemoyne, had begun creating a reservoir of documentation (known as the //Documenti//).
He then shifted, probably with the encouragement of Fr Rua, to a further compilation, ordered as a continuous narrative, offering a coherent interpretation of Don Bosco's life, work and spirit as Founder.
The first 8 volumes (there are 19) appeared between 1898 and 1912. Fr Lemoyne's ninth volume was published posthumously in 1917. The tenth volume was entrusted to Fr Angelo Amadei. Fr Eugene Cerai completed volumes 11-19 in 1939.
In Lenti's words, Lemoyne and his successors "have produced an edifying and faithful story for the Salesian Family". But it is not a critical biography.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Memoirs of the Oratory ....
!!!''Definition:'' (if a precise one exists)
Full title: Memoirs of the Oratory of st Francis de Sales
"Therefore I am now putting into writing those confidential details that may somehow serve as a light or be of use to the work which Divine Providence has entrusted to the Society of St Francis de Sales....Now what purpose can this chronicle serve? It will be a record to help people overcome problems that may come in the future by learning from the past. It will serve to make known how God himself has always been our guide. It will give my sons some entertainment to be able to read about their father's adventures..." (Don Bosco, in his preface to the MO).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Internal evidence suggests they were written between 1873 and 1875, the rest later but by 1877. Don Bosco forbade publication of the work and wrote that it was exclusively for members of the Salesian Society, but he must have realised it would need to be published - at least for them, and gave permission anyway for Fr Giovanni Bonetti to make use of parts of it for his serialised //History of the Oratory// in the //Salesian Bulletin// from January 1879 onwards.
Is it an autobiography? Not formally. Don Bosco knew that the story of the Oratory could not be told without his own story. Hence he begins from his own childhood.
As Fr Lenti describes it, the MO "are to be understood as the product of a Founder's concerns in a period of consolidation of, and reflection on, his work". (//Don Bosco: History and Spirit// Vol 1 . 132).
The MO spans three periods, three decades.
Despite the third decade concluding in 1855, MO in fact ends with 1854 when, according to Don Bosco's own words, a new story began which, if written down, might have been entitled, Memoirs of the Society of St Francis de Sales. There is other evidence that Don Bosco actually saw 1854 as a dividing point in the saga of the founding.
The MO are historical but at the same time not! They might be regarded more in terms of parable and metahistory. The work of Fr Aldo Giraudo in this understanding of the MO is a significant contribution.
!!!''Usage notes''
In the English edition the MO bears the subtitle: 'The Autobiography of St John Bosco'. In the French edition: 'Souvenirs autobiographiques'. Neither of these appear in the Italian edition, nor in the original.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Cenno Istorico]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' annual stipend. Note that this is a special meaning of //mensa// which would otherwise apply to the meal table.
!!!''Definition:'' (if a precise one exists)
GIRAUDO: Annual stipend that the State paid to the bishop of a diocese.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The //Mensa// funding came from large vacant ecclesiastical benefices (lands of ancient abbeys that had been suppressed and were administered by the //Economato ecclesiastico//, a body dependent on the //Ministero dei culti, di grazia e di giustizia//.
We find reference to this //Mensa// in Don Bosco's involvement in the question of the //exequatur//, that is, the government approval for appointment of a bishop, that gave the appointee access to the //temporalità// (glossed as 'temporalities' in English), or in other words allowed him to legally enter into possession of his episcopal see and gain the //mensa// or stipend.
<br>
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
La legge delle guarentigie del 13 maggio 1871 e i decreti applicativi della medesima esigevano che i vescovi neonominati, per conseguire il diritto di entrare in possesso dei beni della mensa episcopale – le cosiddette temporalità – dovevano presentare al ministero l’originale della bolla di nomina e chiedere formalmente la concessione dell’exequatur. (Fonti Salesiane
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SYM Salesian Youth Movement.
!!!''Definition:'' (if a precise one exists)
A movement with an educational character offered to all young people to make them subjects and protagonists of their human and Christian development, with a missionary slant, open to those at a distance, with a desire to make an impact in the locality and in civil society and to be an active part of the local Church (Chávez AGC 407).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Youth groups and associations which, while retaining their autonomy in organisational terms, identify with Salesian spirituality and pedagogy constitute, in an explicit or implicit manner, the Salesian Youth Movement. It is encouraged and led not only by Salesians SDB but by many member groups of the Salesian Family.
In recent years the Rector Major addresses an annual message to the SYM.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
The SYM is something very promising as it involves many youngsters, adolescents and young people ... (Chávez AGC 407)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[youth ministry|pastorale giovanile]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[it]'' (Target Language, as above) <br>''Glossed as:'' minervale.
!!!''Definition:'' (if a precise one exists)
GIRAUDO: The fee or levy that every pupil had to pay at the beginning of the school year.
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
While long gone in Italy, the //Minerval// is still paid in France and Belgium at university or private schools.
<br>
!!!''Usage notes''
!!!''Citation''
Era allora lodevole consuetudine che in ogni corso almeno uno a titolo di premio venisse dal municipio dispensato dal minervale di franchi 12 (from The //Memorie dell'Oratorio//)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Mission.
!!!''Definition:'' (if a precise one exists)
In 1971, the Special General Chapter explained the new use of he term: "Why 'mission' rather than 'purpose'? ...The Church adopts the term when speaking of its mystery... to speak of the 'mission of the Salesians' means highlighting from the beginning the sense of their vocation and presence in the Church. God calls and sends them for a specific service in the Church" (Acts of the SGC n. 23).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The fundamental meaning of 'mission' comes from its Latin root, //missio// or 'sending', and even while this would have been appreciated by Don Bosco in his time, the only way he would have understood the term would have been in the sense we so often find him referring to it - foreign missions, activity to convert benighted savages, such was the theological understanding of the day.
Until 1972 the Salesian Constitutions spoke only of 'foreign missions'. By the time the renewed Constitutions were published in 1984, we learn that 'the mission sets the tenor of our whole life' (C. 3). After the Second Vatican Council the Church came to appreciate mission and missions as something to be seen within the mystery of the Church.
Mission today is now further specified by speaking of ad gentes (to the people (the old foreign missions) or inter gentes (the idea of inculturation of faith in another culture).
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Note that the term can be used adjectivally, as in 'mission territory'.
The Salesian mission can be specified more directly by speaking of 'the mission to the young' (//missione giovanile//) or 'our educational mission' (//missione educativa//). Those who work with us, including laity, are referred to as //corresponsabili nella missione//, those who share our mission, as 'mission partners', 'lay mission partners'.
We also speak of the 'common mission' (//missione comune//). The expression is found frequently in the Salesian Constitutions (e.g. C. 44) where it refers to that which calls on our complementary and shared activity in achieving a common purpose. The common mission is the basis of pastoral planning in Christian life, either at the level of diocese or parish or in the case of a particular group with a particular shared mission (e.g. Salesian Family, the Salesian educative community...).
An issue to note is that the concept is often expressed as //pastorale// (in Italian), hence //pastorale giovanile// (youth ministry) for example. In some Salesian documents, even in English we find this term appearing as a calque, that is simply brought into English as if it were a noun. 'Pastoral' can be a noun in English but only with a very different meaning: a poem, play, or the like, dealing with the life of shepherds, or simple rural life. Trying to force a restricted religious meaning onto that is not the best way to go.
!!!''Citation''
We, the Salesians of Don Bsoco (SDB), form a community of the baptized. Submissive to the bidding of the Spirit we are resolved to carry out the Founder's apostolic plan.....By carrying out this mission we find our own way to holiness. (C. 2)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Missions|Missioni]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Missions.
!!!''Definition:'' (if a precise one exists)
Missions are those “particular undertakings by which the heralds of the Gospel, sent out by the Church and going forth into the whole world, carry out the task of preaching the Gospel and planting the Church among peoples or groups who do not yet believe in Christ. . . . The proper purpose of this missionary activity is evangelization” (Ad Gentes, no. 6).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The more complete term is //missio ad gentes//, in reference to what we used call 'the foreign missions' (a Eurocentric term if ever there was one!). The Salesian Congregation has //Missioni// as a sector of activity and a department. Thus there is a Councillor for the Missions.There exists a tradition within the Congregation of any confrere being able to directly approach the Rector Major to offer himself 'for the missions'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Mission|Missione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' monsignor, bishop (in context).
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Titolo dato già ai papi, re e imperatori, e in Francia agli eredi al trono e a certi principi; dal sec. 14° al 1630 lo ebbero i cardinali, e ora si dà ai patriarchi, vescovi, abati mitrati secolari e a tutti i prelati della famiglia pontificia//. A title given to the popes, kings and emporers, and in France, to heirs to the throne and certain princes. From the 14th century until 1630, Cardinals had this title and now it is given to patriarchs, bishops, mitred abbots, and all prelates of the papal family.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
In English ecclesiastical terminology a monsignor is not a bishop but a domestic prelate. It is better, therefore, not to confuse the terms and to refer to a bishop as a bishop not as a monsignor. In Italian, all bishops and archbishops (and presumably domestic prelates too) are called //monsignori//. Cf. the definitition above. There is no need to transfer this nomenclature to English.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The abbreivation in English can be Mgr or Msgr.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' MSMHC Missionary Sisters of Mary Help of Christians.
''TL'' is ''[it]'' (Target Language, as above) <br>''Glossed as:'' MSMHC Suore Missionarie di Maria Ausiliatrice.
!!!''Definition:'' (if a precise one exists)
Religious Congregation of Pontifical Right, founded by Bishop Stephen Ferrando SDB in North East India in 1942. "The Congregation devotes itself firstly and especially to the missionary apostolate, therefore evangelization and religious education, especially of women and children from the villages will always be a priority amongst the apostolic and charitable tasks of the Missionary Sisters".
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Congregation became a Pontifical Institute on 21 March 1977. It was officially recognised as belonging to the Salesian Family on 8 July 1986.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' necrology.
!!!''Definition:'' (if a precise one exists)
A list of persons who have died within a certain period of time, in the case of the Salesians, from 1859 onwards.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The list is read out (traditionally it was daily) or otherwise provided for each community (very often in digital form these days and made available for perusal by the community).
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
.tc-subtitle .tc-tiddlylink {display:none;}
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' notary.
!!!''Definition:'' (if a precise one exists)
TRECCANI: // «chi prende annotazioni durante un discorso», e nel lat. tardo «scrivano» al servizio di privati o della pubblica amministrazione (con funzioni anche di segretario)]. // Someone who takes notes during an address, ... in private and public administration (also functions as secretary).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
One of the roles of the provincial secretary
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
EG03 Il Segretario Ispettoriale:..Ciò significa che il Segretario ispettoriale ha funzione di 'notaio' o 'cancelliere'...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[cancelliere]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' provincial newsletter.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
First formally encouraged after the Special General Chapter, the province (or provincial) newsletter is now more than encouraged: it is virtually obligated as one amongst many elements of the Salesian Social Communication System. The expectation is that it becomes a planned item within the province's overall plan.The PN is primarily to enable an exchange of news within the province.
!!!''Usage notes''
It was once a paper item but in many if not most instances now is digital.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[SSCS|SSCS Sistema Salesiano di Comunicazione Sociale]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Novice. N
!!!''Definition:'' (if a precise one exists)
Term found in the Year Book
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Year Book|annuario]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' new evangelisation.
!!!''Definition:'' (if a precise one exists)
//Redemptoris Missio// no. 33: ... where entire groups of the baptized have lost a living sense of the faith, or even no longer consider themselves members of the Church, and live a life far removed from Christ and his Gospel. In this case what is needed is a ‘new evangelization’ or a ‘re-evangelization.’”
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Often attributed to Pope John Paul II as one of the characteristic terms of his pontificate, that Pope actually attributes the term to Pope Paul VI in his encyclical //Evangelii Nuntiandi//.
It became a significant ecclesial movement through the 80's and 90's and was taken up by Salesian General Chapters. JP II first used the phrase himself on March 9 1983 in a speech in Port-au-Prince, Haiti. He said the 500th anniversary of Christopher Columbus required not a re-evangelisation but a new evangelisation. He clarified the term in his 1990 encyclical //Redemptoris Missio//, saying it referred to groups who had lost a sense of the living faith. In a letter of Pope John Paul II to the Salesians, he adapts the phrase to refer to Mary Help of Christians as the 'Star of New Evangelisation'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Alternative spelling (US): new evangelization
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' not-for-profit organisation
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Sigla di Organizzazione Non Lucrativa di Utilità Sociale, organizzazione che si occupa, senza fini di lucro e munita di pubblica autorizzazione, di problemi di utilità sociale (assistenza, educazione, rieducazione, ricupero di emarginati, ecc.).// An acronym in Italian for a not-for-profit organisation.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
One might see NPO occasionally, but this is problematic, since NPO (nil per os= not by mouth) is a common and important medical acronym.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[solidarity|solidarietà]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' work.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
presence, community, setting, house
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Would not always be glossed as 'work'. After all at the heart of it must be a 'community'.
Occasionally glossed as 'setting'. We often find it glossed as 'presence'.
Then there are the several //Opere// (Upper case O) or 'Works' that are part of the founding story of the Congregation, including the very 'Work of the Oratory' itself, and the 'Work of Mary Help of Christians' or the 'Sons of Mary'.
There is also the //Opere edite// or published works of Don Bosco, but here the term refers to literature.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
//opera// is a good example of the situation where the semantic range of the Italian term is somewhat wider than for 'work' in English. Of course, 'work' can be applied to an 'apostolic work' in the sense of a particular mission of a community, but perhaps the preference would be to call it either 'apostolic work' or specify it by some other term.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW (cf. Figli di Maria or Sons of Mary).THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' oratory.
!!!''Definition:'' (if a precise one exists)
As defined in classic Salesian terms: "a home, a school a church and a playground".
!!!''Synonyms:''
festive oratory, youth centre, oratory-youth centre
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco had before him earlier experiences and patterns in oratory work (Milan, Rome, even Turin - Fr Cocchi's Guardian Angels Oratory). But his differed in important respects:
* Valdocco was far from a church, so his oratory was not parish-based.
* Most oratories were 'festive', i.e. Sundays and holy days, and then only for a short period; he gathered the youngsters all day, then extended the action to day and evening classes during the week.
* Traditional oratories were defined from attendance at church and in parish facilities; instead the boys who came to his oratory came 'to spend the day with Don Bosco', wherever that may happen to be.
* Traditional oratories had selective membership; he would have preference for the truly poor and abandoned, and sometimes difficult.
* Traditional oratories gave little time to play and recreation. For Don Bosco, his oratory was a 'recreation park'.
'festive oratory' needs additional comment: The term implies non-working days, weekends, long weekends and the like. In fact DB took up a term already in existence - the oratory and the festive oratory already existed, so what was the distinctive notion that DB added? It was the fact that in an Italian parish context, the festive oratory was mainly for prayer, and mainly just for an hour or two in the morning or afternoon. DB made it play and prayer, and open from early morning to late evening! His oratory, then, became truly festive as well as being on Sundays and feast days, the real meaning of //festivo// in Italian. The daily oratory was actually a slightly later 'invention'.
!!!''Usage notes''
Would most usually be capitalised in reference to Valdocco.
The best description we have of the term is to be found in GC21 nos.121ff. The discussion notes that 'oratory' and 'youth centre' indicate different realities in different areas, but both coming from the same pedagogical intuition and spirit. It notes that the two terms are somewhat imprecise even in normative texts. GC21 however, offered its definitions: oratory is aimed at younger children (//ragazzi//), is for the most part open to the masses with aims and methods that are appropriate to this. By contrast the youth centre is open to older youth. But even this would not be true in every circumstance.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Historical Outlines|Cenni Storici]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' systematic.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Composto di parti distinte ma tra loro corrispondenti e armonicamente disposte in vista del fine a cui sono coordinate: un complesso o. di leggi; un tutto o. (di cose o anche di persone).// One among several definitions for //organico// in Italian implies that something comprisesf distinct but corresponding parts harmoniously arranged in view of the purpose to which they are coordinated ...
!!!''Synonyms:''
whole, overall, planned, integral, structured ...
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
In many instances this adjective may not need to be translated and certainly would be best glossed with a term other than 'organic'. Possible other terms are 'structured', 'planned', 'integral', 'overall'. In the context of POI or //Progetto Organico Ispettoriale//, avoid 'organic' and either gloss simply as 'Province Project' or 'Plan', or 'Overall Province Plan'. There is an historical reason too why the term 'organic' can be misleading. Cf comment on [[deliberation|deliberazione]].
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
//organico// as 'organic' sounds rather too botanical in English! SO, //pastorale organico//, if it were translated as 'organic ministry' might look as if it were an agricultural venture! Instead, it is a holistic, structured, integral ministry.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[POI Progetto Organico Ispettoriale]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' equivalent recognition.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //In partic., forma di equiparazione di scuole non statali a quelle pubbliche, che comporta la validità dei titoli di studio da esse rilasciati (v. pareggiato).// equivalent recognition of non-state schools which ensures that their results are considered to be valid.
<br>
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term is usually found in Salesian texts in reference to the scholastic context, meaning equal recognition (e.g., of results) between State and Catholic schools.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' autumn walks.
!!!''Definition:'' (if a precise one exists)
Excursions organised by Don Bosco from Valdocco to his birthplace and surrounds, that took place around the feast of Our Lady of the Rosary (first Sunday of October).
!!!''Synonyms:''
autumn outings
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In 1848 Don Bosco began taking a group of boys to his birthplace at the Becchi for the feast of Our Lady of the Rosary, celebrated in the chapel that he had set up in his brother Joseph's house with external access. These yearly outings (which included excursions into the countryside around the Becchi), continued with ever-expanding itineraries, until 1864.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Viganò ACG341: ..passeggiate autunnali era sempre attento a scoprire e incoraggiare vocazioni.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' youth ministry.
!!!''Definition:'' (if a precise one exists)
One of the key sectors of the Salesian mission, under the direction of a General Councillor.
<br>
!!!''Synonyms:''
youth apostolate, youth pastoral ministry
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Salesian youth ministry, as central as it is, obviously covers very many areas. These include at least the following:
1. The Oratory and Youth Centre
An environment of broad acceptance, open to a wide range of young people, above all those most alienated. This is achieved through a diversity of educational and evangelizing activities characterized by their focus on the young and strong personal relationships between educator and youngster, capable of becoming a missionary presence in the world of the young and of civil society.
2. The school and Professional formation
Centres for formal education, inspired by Gospel values according to the spirit and pedagogical style of the Saleisans, in order to promote popular education attentive to the most needy, to their professional formation and to accompanying their gradual insertion into the world of work.
3. Boarding and hostel arrangements
A service for accepting young people without family or who are temporarily estranged from family. Here they find personal relationships, opportunity for commitment and responsibility for young people in daily life, and the life of the group with its various formative educative and Christian opportunities.
4. A presence to the Tertiary sector
Through institutes of higher education inspired by Christian values and with a Catholic and Salesian style; hostels and university residences, other services of pastoral animation at this level.
5. The parish.
Characterized by a special attention to young people, above all to the poorest of them, the popular environment where it is to be found, by the presence of a Salesian religious community at its animating heart, and by activity of evangelization and education to faith strictly integrated with the human development of the person and the group.
6. Social services and works for youth-at-risk
A family atmosphere of acceptance and education, animated by a community with ‘preventive’ criteria according to the educative style of Don Bosco. This is inspired by the Gospel and has the aim to evangelize, open to the transformation of realities which are socially exclusive and to the building of a culture of solidarity, in collaboration with other social institutions.
7. Social communication
Through education to an understanding and proper use and utilization of the media, the development of the communicative potential of persons through the new languages of music, theatre, art etc..... Formation to a critical, aesthetic and moral sense, promotion of information and editorial centres in press, radio, television, internet etc. Finally, the service of the Salesian educational and pastoral project.
8. Other new forms of Salesian presence to the young
- The Salesian Youth Movement: communion and connection between all youth groups and associations which acknowledge Salesian spirituality and pedagogy, and which take up an educative and evangelizing task and commit themselves to share and coordinate amongst themselves.
- The Salesian Voluntariate: a voluntary activity commited to the human and Salesian development of the young, above all the poorest of them, and active amongst the common folk, according to the style of Don Bosco’s Preventive System and the values of Salesian Youth Spirituality. They carry out their activity in view of the transformation of society and the removal of causes of injustice, and they favour a community experience and the vocational development of the volunteer.
- Services for vocational orientation: meetings and centres for vocational orientation, communities where this can occur, etc…
- Specialized services for Christian formation: special education centres, houses of retreat and spirituality, centres for pastoral and catechetical formation etc.
!!!''Usage notes''
The form 'youth pastoral' is to be avoided, since it is a calque (translated literally from Italian) and would not be recognised easily outside Salesian circles. English regards 'pastoral' as an adjective in most instances, and where it is a noun it refers to things other than ministry.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[apostolate]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' PDO Project and Development Office.
!!!''Definition:'' (if a precise one exists)
The PDO (Project and Development Office) is an entity, juridical or otherwise, instituted and owned by the Salesian Provincial Community (C.44, C.58 Salesian Constitutions), fully at the service of the Salesian charism in the province.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The PDO participates in the restructuring, re-shaping and re-dimensioning of the Salesian works. It serves as a link, a bridge, between the consecrated Salesians and civil society in the work of promoting youth development and empowerment, justice, and holistic human development. It is recognised in the province’s Directory with due approval of the Provincial Chapter.
!!!''Usage notes''
Not every province has a PDO, and the PDO is not the same as a Mission Office (sometimes, though innacurately in linguistic terms, called a 'Procure'). The PDO assists in the process of the drafting, elaborating, implementing and evaluating of the Overall Provincial Plan (OPP) and the Salesian Educative Pastoral Plan (SEPP) ensuring its sustainability. It undertakes research in the field of children and youth to continuously make relevant the plans and programs of the province.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[project|progetto]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SEPP Salesian Educative and Pastoral Plan.
!!!''Definition:'' (if a precise one exists)
A basis for planning and evaluating works chosen in line with the Congregation's basic options: oratories, youth centres, schools, centres for young workers, parishes, missions ... which involves objectives, methods, features with due regard to geographical and cultural differences (Cf. GC21 no. 105)
!!!''Synonyms:''
Sometimes known as EPP (without the 'Salesian')
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Since its inception in 1978 the EPP (or Salesian Educative and Pastoral Plan/Project SEPP, another variant) has played a vital part in the Congregation's planning mentality. The EPP was codified in the Regulations in 1984 (R. 4).
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Be it the SEPP, the OPP, the PDO (and any range of acronyms, usually with 'P' in them, they are tied into the concept expressed in Italian as //progettualità// or 'planning mentality' in English. This planning mentality is 'A progressive process towards concrete and verifiable objectives, with clear options regarding priorities and orders of sequence'(Chávez, AGC 407)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[project|progetto]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' personal media.
!!!''Definition:'' (if a precise one exists)
An emerging digital communications media, incorporating interactivity in its design, and allowing users not only to consume media products, but also to create them, (Shiregu Miyagawa, professor of linguistics and communication at the Massachusetts Institute of Technology). We could probably say today that it has fully emerged!
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term was introduced into Salesian discourse by GC26. In fact it came from the floor during a discussion on social communication, and was offered by a German Chapter representative. The term then found its way into the Chapter documents in a somewhat negative comment: //La cultura della personal media può compromettere la maturazione della capacità di relazione//.
In the light of the definition offered above however, the discussion of personal media as a formation theme should not be limited to its negative effects, but might objectively consider several other factors: creativity, and the fact that human beings with access to personal digital devices are now creators. And perhaps the most significant issue here is to ask what personal media are in function of. They are in function of social media.
The term, as employed at GC26, was occasionally extended by reference to 'personal and convergent media'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
The culture of personal media can compromise one's ability to mature in personal relationships. (GC26 no. 99)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[social communication|comunicazione sociale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Pious (Society).
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term collocates most typically with //Società// as in //Pia Società// or the full term //La Pia Società Salesiana//. It was dropped from any official reference to the Salesian Society from 1926 onwards, given that by this time 'society' was not considered to give any cause for wrong interpretation. Don Bosco used add it in to make it clear that his 'society' was not one of political or even of secret leanings, but a society interested only in good. The Superior Chapter in 1925 decided that //Pia// would be attached only to the //Pia Unione dei Cooperatori Salesiani//.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Society|Società Salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' OPP Overall Provincial Plan.
!!!''Definition:'' (if a precise one exists)
The strategic plan for the animation and government of the province, which takes an overall view of its life and mission and presents the fundamental choices that ought guide its organisation.
!!!''Synonyms:''
Overall Provincial Plan, Provincial Plan, Structural Plan, Strategic Plan
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
Philippines North Province tends to use SPP (Strategic Provincial Plan) rather than OPP. Other English-speaking provinces may well also use other terms.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The adjective 'organic' in English does not sit well with the general English-speaking population. The term 'Organic Provincial Plan' is a calque, an item taken directly from its source language (it) and brought into English without much thought to its meaning. 'organic' certainly conveys the idea of structure and systematic arrangement. but it is more likely to evoke the notion of biology and organic compounds or even compost heaps!
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[organic|organico]], [[project|progetto]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Dossier.
!!!''Definition:'' (if a precise one exists)
A //positio// (//Positio super Virtutibus//) is a document or collection of documents used in the process by which a person is declared Venerable, the second of the four steps on the path to canonisation as a saint. It collects the evidence obtained by a diocesan inquiry into a candidate's heroic virtues in a form suitable for presentation to the Congregation for the Causes of Saints. Upon presentation, the positio is examined by a committee of expert historians and theologians, and if they find the evidence presented suitable, they may then make a recommendation to the Pope that the candidate be declared Venerable.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In his //Don Bosco History and Spirit// series, Arthur Lenti calls it a 'docket'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Postulator General|Postulatore Generale]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' Postulator General.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Nel diritto canonico, l’ecclesiastico, e rispettivam. l’avvocato concistoriale, che tratta una causa di beatificazione e canonizzazione presso il tribunale competente, così chiamato perché postula, ossia chiede, la proclamazione del beato o del santo.// In Canon Law, the ecclesiastical, and the consistorial lawyer, who deals with a cause of beatification and canonisation in the competent court, so called because he 'postulates', that is, asks for the proclamation of the candidate as blessed or saint
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Person nominated by the Rector Major to follow up all causes of canonisation.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Positio]], [[Salesian holiness|santità salesiana]]//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' poor and abandoned.
!!!''Definition:'' (if a precise one exists)
An expression typical of Don Bosco which refers to any kind of poverty: physical, economic, spiritual cultural, at its broadest. They may be young people up to 25 years of age, but mostly between 12-20. In fact, Don Bosco's definitive vocational option.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The question arises, from the earlier Constitutions, and varied subsequent usage, of the difference between 'poor, poorer, the poorest' especially in the early Constitutions' Chapter on Purpose. The following insights are from Lenti, //Don Bosco History and Spirit// Vol 4. In the chapter on ''Purpose'', the term occurs in various grammatical forms...The Latin forms //pauperes, pauperiores, pauperrimi// (Italian //poveri, più poveri, i più poveri/poverssimi//) constitute a system having a twofold semantic value.
These forms may be used either in an 'asbolute' fashion as quantifiers, or in a 'relative' fashion as classifiers...As quantifiers they express the quantity or intensity of a person's poverty 'absolutely', that is without comparison to the poverty of other persons. As quantifiers the three forms express degrees of poverty by reference to a social standard. As classifiers the three forms express degrees of poverty in relation to a person or group. (where 'poorer' might mean 'less well off'). 'poor, poorer, poorest' in the chapter on Purpose, and indeed throughout the Constitutions, are used as quantifiers, not as classifiers. It was not Don Bosco's intention to classify young people by the criterion of poverty and to choose the poorest of all to the exclusion of others.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[abandoned|abbandonato]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' poverty.
!!!''Definition:'' (if a precise one exists)
1: the state of one who lacks a usual or socially acceptable amount of money or material possessions
2: voluntary renunciation, as a member of a religious order, of the right as an individual to own property, usually expressed as a vow
3: an evangelical counsel, thus 'evangelical poverty'
<br>
!!!''Synonyms:''
solidarity with the poor, preferential choice for the most needy, reesponsible management of resources
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
All three meanings above are particularly relevant for Salesian life, since Salesians more often than not and by preference, live amongst the world's poor. But it is the third meaning which comes most to the fore in Salesian discourse today.
The problem begins when we have to explain what poor and poverty mean - these are quite elastic terms in our languages today, with implications not only economic and social but psychological, cultural... From Don Bosco himself, we retain in the renewed Constitutions the following reference: that we "follow the Saviour who was born in poverty..", in other words, DB begins with a reflection on evangelical poverty, and this is the term we use most often today when speaking of the vow of poverty.
Cardinal Raul Silva Henriquez SDB, famously commented at Vatican II on evangelical poverty (fruit of grace) and socio-economic poverty (fruit of sin).
The theme of evangelical poverty became central to the 26th General Chapter, where it was closely linked to the //cetera tolle// of //da mihi animas cetera tolle//: "The detachment from everything that makes us insensitive to God and hinders the mission".
There are any number of current terms which are effectively synonymous with evangelical poverty and which we find in contemporary Salesian literature: solidarity with the poor, preferential choice for the most needy, reesponsible management of resources
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
SDB-Regolamenti: ... servizio dei giovani poveri: dei giovani anzitutto che, a causa della povertà
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[da mihi animas cetera tolle]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' project, plan.
!!!''Definition:'' (if a precise one exists)
(1) An idea, mostly accompanied by a study relating to the possibilities of realising this idea in practice.
(2) An actual plan
!!!''Synonyms:''
plan
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In Salesian discourse, especially in Italian, there is a wide variety of 'projects', drawing substantially from the first definition indicated above, i.e. the emphasis on an idea possibly accompanied by plans for its realisation. But here are also much more concrete plans. Certainly in English we need to determine which of the two definitions we are really talking about, in context.
!!!''Usage notes''
It has to be said that the English language prefers to emphasise the second definition - the concrete plan, and in fact to use the term 'plan' by preference.
That said, we need to consider what is at stake in each use of the term in context: the 'Project of Life' is a commentary on the Constitutions, and here 'project' is the term that was used, so 'Project of Life' exists in fact, and then by extension we speak often of a 'personal project of life', though we might just as easily speak of a 'personal plan'.
The Italian POI or //Progetto organico ispettoriale// seems better rendered in English as OPP or 'Overall Provincial Plan', especially as //organico// is not best rendered literally in English as 'organic', and 'plan' seems more appropriate in this context.
We have already had 'Project Africa' and it shall remain as such. We have 'Project Europe' too. These two 'projects' would seem to draw more from the first definition than the second. But there are many more! EPP, 'Pastoral and Educative Project', or SEPP, 'Salesian Pastoral and Educative Project', the 'Gospel project of life', the 'Project of animation and government of the Rector Major and his Council'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[PDO Project and Development Office]], [[SEPP|PEPS Progetto educativo-pastorale salesiano]], [[organic|organico]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' personal life plan.
!!!''Definition:'' (if a precise one exists)
A way of bringing together one's desires, energies and values in a personal project of life, in which one assumes responsibility for one's growth and lives to the full the deepest motivations of one's vocation (FSDB 69)
!!!''Synonyms:''
personal plan of life
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A (written) plan where the individual depicts the kind of person he wishes to be and the process for achieving this. This approach was mandated by the [[Ratio]] and further emphasised by the 25th General Chapter no. 16, but we already find it in the 1984 Constitutions and Regulations, R. 99, though not clearly defined in this latter instance.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
One of the practical ways in which he shows responsibility for his formation is by having a personal plan for his own life. (FSDB 216)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Ratio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' promise of charity.
!!!''Definition:'' (if a precise one exists)
A proving period, designated by Don Bosco, during which selected individuals would engage in the practical exercise of charity toward neighbour, which would then be a promise but with the intention (on Don Bosco's part) that it would lead to a vow.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
On 26 January 1854, according to a note by Don Rua, four young men along with Don Bosco came together in DB's room and were invited to undertake a proving period in the practical exercise of charity toward neighbour, which would then be a promise but ultimately would be vowed. Instead of using the word 'novitiate' which may have frightened them off, Don Bosco cleverly used 'proving time'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[charity|carità]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' protomartyr.
!!!''Definition:'' (if a precise one exists)
MACQUARIE: the first martyr in any cause, especially St Stephen, the first Christian martyr.
TRECCANI: // I primi martirî cristiani; è termine usato sia come appellativo tradizionale di s. Stefano (in tal caso in funzione di attributo: santo Stefano protomartire), sia per indicare i santi morti durante le persecuzioni in età tardoimperiale romana: i p. della Chiesa//
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Salesian proto-martyrs are Saints Aloysius (Louis) Versiglia and Callisto Caravario.
On February 25, 1930, Salesians Bishop Louis Versiglia, vicar apostolic of Shiu Chow, China, and Fr Callistus Caravario, pastor of the Lin Chow mission, were murdered at Li-Thau-Tseul in the district of Lin Chow by Communist pirates while journeying in the company of several female catechists, whose human dignity they defended successfully at the cost of their own lives. The Salesian Family observes their feast day every year on their “heavenly birthday.”
On October 1, 2000, St. John Paul the Great canonised 120 martyrs who shed their blood for the Faith in China between 1648 and 1930. Of these, 87 were Chinese and 33 were missionaries. Their collective memorial day is July 9.
Chronologically, the last two of these martyrs—the only ones after the Boxer Rebellion of 1900—were Bp. Versiglia and Fr. Caravario.
Born in 1873 in the Italian province of Pavia, Louis entered the Oratory of St. Francis de Sales at Turin in 1885. After making his profession as a Salesian in 1889, he earned a degree in philosophy at the Gregorian University in Rome, was ordained in 1895, and served as master of novices in Rome from 1896 to 1905.
Then Fr Michael Rua, Don Bosco’s successor as Rector Major, tapped Fr Versiglia to lead the first Salesian expedition to China, which arrived at the Portuguese colony of Macao in 1906. When the Salesians ventured onto the mainland to open a mission at Shiu Chow in 1918, he led that group, and when the mission was erected into a vicariate apostolic in 1920, he was chosen as its bishop.
Bp. Versiglia displayed personal holiness, wisdom in his government, and tireless activity as he organized and developed his vicariate. He set up his episcopal headquarters and opened schools for boys and girls (with the Salesian Sisters), a minor seminary for Chinese youths, a formation center for local catechists, an orphanage, an old-age home, a medical clinic, and some 20 mission stations.
Fr. Caravario, born in 1903 in the province of Turin, was still a “baby priest,” having been ordained by Bp. Versiglia in May 1929. He too had studied at the Oratory, and after his profession in 1919 and his postnovitiate studies had gone to China in 1924 as a missionary. He was transferred to Timor for his practical training but returned to China and was assigned to Lin Chow in Bp. Versiglia’s vicariate.
Fr. Caravario was characterized by his virtuous life, pursuit of holiness, and missionary zeal. In February 1930 he traveled from his mission to Shiu Chow in order to accompany Bp. Versiglia and his new catechists upriver to Lin Chow—the fatal trip interrupted by Communist bandits.
The cause of canonisation of the two sturdy missionaries was initiated in 1953. Recognised as martyrs by Blessed Paul VI in 1976, they were beatified by St John Paul II in May 1983, who also took the initiative to add them to the roster of the Chinese martyrs to be canonised in 2000.
St. John Paul’s homily at the canonization Mass: http://w2.vatican.va/content/john-paul-ii/en/homilies/2000/documents/hf_jp-ii_hom_20001001_canonization.html
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[martyrdom|martirio]], [[Salesian holiness|santità salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' PAL Project of Apostolic Life.
!!!''Definition:'' (if a precise one exists)
Official document of the Salesian Cooperators containing the Statutes and Regulations.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Previously known as the //Regolamento di Vita Apostolica RVA// or 'Regulations of Apostolic Life RAL',
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' fourth sector.
!!!''Definition:'' (if a precise one exists)
SOURCE: https://www.fourthsector.net/
The "fourth sector" is an emerging sector of the economy which consists of "for-benefit" organizations that combine market-based approaches of the private sector with the social and environmental aims of the public and non-profit sectors.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Over the past few decades, the boundaries between the public (government), private (business), and social (non-profit/ non-governmental) sectors have been blurring, while a fourth sector of organizations has been emerging.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' quinquennium.
!!!''Definition:'' (if a precise one exists)
A period lasting five years and typically applied to the period of five years following priestly ordination, but could equally apply to Brothers after Final Profession.
!!!''Synonyms:''
five year period
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Effectively an extension of initial formation even though that period is formally complete.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
ACG388 COLLABORAZIONE INTERISPETTORIALE: ...salesiani del quinquennio sia presbiteri che coadiutori.
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[formation|formazione]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' reason.
!!!''Definition:'' (if a precise one exists)
Part of the trinomial which forms the basis of the Preventive System (reason, religion, loving-kindness), the term refers to a sense of balance and measure in personal relationships.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[religion|religione]], [[loving-kindness|amorevolezza]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Ratio.
!!!''Definition:'' (if a precise one exists)
Full term is //Ratio Fundamentalis Institutionis et Studiorum// which 'sets out in an organic and instructive way the complexus of principles and norms concerning formation which are found in the Constitutions, General Regulations and other documents of the Church and of the Congregation" '(R. 87).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Ratio has a long history! Introduced by the Jesuits in 1599 as a needed curricular guide for their rapidly expanding network of schools, the //Ratio Studiorum// laid out the organisation of Jesuit institutions to the smallest detail, while establishing a uniform course of study over at least 13 years. Vatican Council II mandated a Ratio for preparation of candidates to the priesthood, and subsequently al for the Permanent Diaconate. In the renewal of consecrated life that flourished after the Council, all Congregations developed a Ratio. The first Salesian Ratio was published in 1985 and revised in 2000.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
|!Reference abbreviation|!Full Title|!Author|
|BM|Biographical Memoirs|Various|
|DBMagone|Vita del giovane Michele Magone|Don Bosco|
|DBScritti|Scritti Spirituali, Giovanni Bosco|ed. J. Aubry|
|DBSpiritual Test|Spiritual Testament|Don Bosco|
|EG|Elementi Giuridici e Prassi Amministrativa...|Editrice SDB|
|~LentiDBHS|Don Bosco History and Spirit Vol 1-7|Arthur J. Lenti|
|MO-En|Memoirs of the Oratory|Don Bosco|
|MO-It|Memorie dell'Oratorio|Don Bosco|
|MB|Memorie Biografiche|Various|
|PGMan|Manuale della Pastorale Giovanile|Dicastero PG|
|PR|Prevenire non reprimere|P. Braido|
|PV|Il Progetto di Vita dei Salesiani di Don Bosco|Editrice SDB|
|100p-c |Les cent mots-clés de la spiritualité salésienne|F. Desramaut|
|Ratio|Ratio Fundamentalis Institutionis et Studiorum|Editrice SDB|
|TSB|The Salesian Brother|Editrice S.D.B Rome 1989|
|Vademecum|Vademecum of the General Council, 2003|General Council|
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' regional (councillor).
!!!''Definition:'' (if a precise one exists)
Member of the General Council whose task it is to "promote a more direct liaison between the provinces and the Rector Major and his council. (They) look after the interests of the provinces assigned to them. (They) foster in the general council a knowledge of the local situations in which our mission is carried out". (C: 140)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Regional is a relatively new institution in the Congregation and pertains more to the notion of animation or fraternal communion than of government; the Regional, even though often termed 'regional superior' in common parlance, is not a superior //per se//, canonically speaking. He does function in this role by specific appointment as a Visitor on behalf of the Rector Major, however.
Regionals (and therefore regions) were introduced by the 19th General Chapter. Tasks of Regional are (1) to promote a more direct link between provinces and RM and council (2) look after interests of provinces assigned to them (3) ensure knowledge of local situations in council discussions. Cf. also [[provincial conference|conferenza ispettoriale]].
!!!''Usage notes''
The term 'regional' (without councillor) functions as both a noun - person (the Regional) and an adjective.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Very often capitalised as Regional (Councillor). Alternative spelling (US) Councilor
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[provincial conference|conferenza ispettoriale]], [[region|Regione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Region.
!!!''Definition:'' (if a precise one exists)
A group of provinces assigned to a General Councillor who is therefore known as a regional councillor. The constitution of the groups of provinces is made by the general chapter. (C. 154 of the SDB Constitutions).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Current Salesian regions (2019) are:
* Africa Madagascar
* America South Cone
* East Asia-Oceanía
* South Asia
* Central & North Europe
* Interamerica
* Mediterranean
* RMG-UPS
The regional structure, from the definition, is clearly very flexible since there is no further determination of its structure, and no specific criteria for its make up in either the Constitutions or the Regulations. Indeed the precise term 'region' appears only once in the Constitutions and Regulations, and then in the plural (R. 77). Certain possible, though not obligatory features, however, can be inferred from the tasks of the Regional Councillor: interprovincial structures, regional offices of documentation. Curiously this is not the case for another structure known as the 'provincial conference', which is given more precise description in the regulations.
!!!''Usage notes''
Prior to GC26, what is now the Central and North Europe was divided into two regions: North and West Europe. What is now known as the Mediterranean region was formerly known as the Italy-Middle East Region.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' moderator.
!!!''Definition:'' (if a precise one exists)
E.g. of General or Provincial Chapter.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Italian may also speak of a //moderatore//, but he is likely to be one who controls a particular session under the general direction of the //regolatore//. English is more likely to extend the phrase to 'moderator of a session' or similar, while still saying 'moderator' for the one who gives the Chapter its general direction.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Chapter|capitolo (generale CG) (ispettoriale CI)]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' religion.
!!!''Definition:'' (if a precise one exists)
[The term] indicates that Don Bosco's pedagogy is essentially transcendent, in so far as the ultimate educational objective at which it aims is the formation of the believer. For him the properly formed and mature man was the citizen with faith, who places at the centre of his life the ideal of the new man proclaimed by Jesus Christ and who bears courageous witness to his own religious convictions.(JPII (//Iuvenum Patris// 11)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
It is evidently not a question of a speculative and abstract religion, but of a living faith rooted in reality and stemming from presence and communion, from an attitude of listening and from docility to grace. As he liked to put it “the columns of an educational edifice”, are the Eucharist, Penance, devotion to Our Lady, love for the Church and its pastors. His educational process was a pathway of prayer, of liturgy, of sacramental life, of spiritual direction: for some it was the response to the call to a special consecration (how many Priests and Religious were formed in the Saint's houses!); for all it was a perspective and a path to holiness. Don Bosco was a zealous priest who always referred back to its revealed foundation everything that he received, lived and gave to others. This aspect of religious transcendence, the cornerstone of Don Bosco's pedagogical method, is not only applicable to every culture but can also be profitably adapted even to non-Christian religions.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[reason|ragione]], [[loving-kindness|amorevolezza]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' friendly talk
!!!''Definition:'' (if a precise one exists)
'Faithful to Don Bosco's recommendation, each confrere meets frequently with his superior for a friendly talk' (C. 70)
!!!''Synonyms:''
manifestation (deprecated)
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Be careful to disambiguate this use of the Italian term //rendiconto// from its other meaning, namely, 'financial report'.
!!!''Usage notes''
//rendiconto// may still be used among English-speaking Salesians, but its earlier gloss, 'manifestation' has largely died out.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
DBmem: ..Non dimentichi mai il rendiconto mensile per quanto è possibile;
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[colloquio]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' house list.
!!!''Definition:'' (if a precise one exists)
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The 'Repertorio domestico' tells us that people other than young boarders stayed at Valdocco, e.g. two priests and a seminarian who paid their way.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:''(Central) Moderator (General).
!!!''Definition:'' (if a precise one exists)
The person in charge of the VDB or CDB, or CMB ...
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
The term would be impossible to gloss adequately in English by retaining the //responsabile// in some transliterated English form (e.g. Responsible). So the solution is to use the better-understood 'Moderator..' or, in the case where the Italian term si //Responsabile Centrale//, Central Moderator.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
We have become accustomed to 'Rector Major', but are definitely not accustomed to 'Responsible Major'! The problem is that while 'Rector' is at least a noun in English, 'responsible' is an adjective.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[VDB|VDB Volontarie di Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' term of office as (Rector Major), (Rector).
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Carica, ufficio di rettore// The office of Rector (Major).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
ALERT! Should not be glossed rectorate, but rather, use the longer phrase suggested above.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Rector Major.
!!!''Definition:'' (if a precise one exists)
Superior of the Salesian Society, successor of Don Bosco, father and centre of unity of the Salesian Family (C. 126)
!!!''Synonyms:''
Superior General
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The plural form is probably 'Rectors Major' but by analogy with 'sergeant major' could also be 'Rector Majors'. However, since 'Rector' is the chief element in the term it most likely receives the plural indicator.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' aloofness from the world.
!!!''Definition:'' (if a precise one exists)
TRECCANI:// Il fatto di vivere ritirato// The fact of living in a withdrawn, aloof way.
!!!''Synonyms:''
climate of recollection, flight from the world, withdrawal from the world,
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Not a common term today in Italian, but common enough In Don Bosco's time. It becomes a key interpretative concept for Don Bosco's personal spirituality.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' retreat.
!!!''Definition:'' (if a precise one exists)
TRECCANI: . //In partic., r. spirituale (o assol. ritiro), corso di esercizî spirituali svolto, come pratica religiosa, per un breve periodo di tempo lontano dall’ambiente e dagli impegni consueti//. Especially in a religious sense, a retreat, a time spent away from one's usual setting and occupation.
!!!''Synonyms:''
recollection
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
In Salesian usage the //ritiro// would normally apply to the monthly or quarterly recollection.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' turntable.
!!!''Definition:'' (if a precise one exists)
SOURCE UNKNOWN: two disks at the ends of an axle with the space between them divided by radial panels
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The above definition only describes the physical appearance. The //ruota// would have been found in Salesian houses where the Sisters did the cooking and other domestic services. It goes back to a canonical requirement of separation, and the 'ruota' ensured that items (food, clothing, whatever) could be placed on one side, then swung around to be taken from the other side, without the persons involved seeing each other.
There is a rather darker history to what was also known as the //ruota degli esposti//, a 'baby hatch' where a new mother would leave an unwanted infant for the nuns to care for. The //ruota// can also be found at the entrance to some convents of enclosed nuns for prayer intentions to be left.
A Piedmontese term for the //ruota// that might be found in Salesian historical texts is //tarabacola//
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Dove le suore prestano l’opera loro nei collegi o nei seminari devono avere soltanto comunicazione per mezzo della ruota tanto per commestibili, quanto per abiti, biancheria, arredi sacri e simili.(1885 Regole o Costituzioni per l'Istituto delle Figlie di Maria Ausiliatrice).
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Sacred Heart.
!!!''Definition:'' (if a precise one exists)
# a devotion
# a building
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In terms of the devotion, DB mentions the devotion to the Sacred Heart in his //Giovane Provveduto//, but it is not a strongly prominent element in his spirituality. Fr Rua, following the Church's leanings at the time (1900) issued an instruction on the devotion for Salesians and consecrated the Congregation to the Sacred Heart.
In terms of a vuilding, the church Built by DB in Rome, and now the location of the Rector Major and his Council and the General Administration of the Salesians of Don Bosco..
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[basilica]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' parish hall.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The new concept of the parish hall (there could be a better translation) as found in the Italian term here does not exist in English. It really means a place where many things could happen 'film, video, theatre, music, tied to the role of the parish as a community of faith. Umberto Eco credits DB as having founded, in the Oratory, a concept akin to what the //sala della comunità// is intended to be.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian Missions Australia.
!!!''Definition:'' (if a precise one exists)
The Salesian Missions Australia office supports the vocational teaching of underprivileged young people in developing countries, in order that they find employment and become self-sufficient members of their nation.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Australian Salesian Missions Office was established in the 1960’s to support a variety of Salesian education projects in developing countries. The Salesians are working in 132 countries with a large contingent of about 28,000 religious men, women, volunteers and others.
As a Catholic organisation and followers of St John Bosco, we are committed to helping youth build a better future, through education and training. Our Mission is to support the vocational teaching of underprivileged young people in developing countries, in order that they find employment and become self-sufficient, contributing members of their nation.
Salesian works include schools [academic, technical, agricultural], school luncheon programs, orphanages, workshops for unemployed youth, emergency programs and accommodation for street children, water supply, medical clinics and providing assistance to the disadvantaged. Don Bosco schools are well regarded in their local districts and continue to provide support for communities not just individuals.
Aid and services are also provided directly to people in need of emergency relief from human poverty, sickness or helplessness as a result of natural disasters such as typhoons, earthquakes, droughts and floods.
In recent years Salesian Missions Australia has supported projects in a range of countries including Cambodia, Ecuador, Ethiopia, Fiji, Guatemala, India, Kenya, Myanmar, Philippines, Samoa, Solomon Islands, Sudan, South Sudan, Timor Leste and Vietnam.
We are a member of the Australian Council for International Development (ACFID) , the peak body for Australian aid and development NGO's. As an ACFID Member we are committed to full adherence to the ACFID Code of Conduct, conducting our work with transparency, accountability and integrity. See www.acfid.asn.au for more details.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ASMOAF|ASMOAF Australian Salesian Mission Oversaid Aid Fund]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian Theological Institute Ratisbonne.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
Salesian Monastery, Studium Theologicum Salesianum Sts Peter and Paul
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Salesian Seminary and Study centre in Jerusalem which used to be located at Cremisan near Bethlehem.
The building, 130 years old, is the property of the Holy See and was administered initially by the Congregation founded by a Jewish convert to Christianity (he converted in France), Fr Marie-Alphonse Ratisbonne. The female branch of the Congregation is known as the Sisters of Sion.
Often we see 'Salesian Monastery' in the official title in documents intended for within Israel - this is to fulfil Israeli law regarding its status. The Houses at Cremisan and at Beit Jamal are also known as monasteries. The administration at Ratisbonne seems to prefer the second designation: Studium Theologicum Salesianum Sts Peter and Paul, at least as an official letterhead in Salesian circles.
!!!''Usage notes''
Very often referred to, when the context is easily understood, as simply 'Ratisbonne'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[convent|convento]].//
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
lang="en" xml:lang="en">
<head>
<title>Salesian Vocabulary</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
<meta name="generator" content="Org-mode"/>
<meta name="generated" content="2011-10-11 08:11:55 CEST"/>
<meta name="author" content="jbfox"/>
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
html { font-family: Times, serif; font-size: 12pt; }
.title { text-align: center; }
.todo { color: red; }
.done { color: green; }
.tag { background-color:lightblue; font-weight:normal }
.target { }
.timestamp { color: grey }
.timestamp-kwd { color: CadetBlue }
p.verse { margin-left: 3% }
pre {
border: 1pt solid #AEBDCC;
background-color: #F3F5F7;
padding: 5pt;
font-family: courier, monospace;
font-size: 90%;
overflow:auto;
}
table { border-collapse: collapse; }
td, th { vertical-align: top; }
dt { font-weight: bold; }
div.figure { padding: 0.5em; }
div.figure p { text-align: center; }
.linenr { font-size:smaller }
.code-highlighted {background-color:#ffff00;}
.org-info-js_info-navigation { border-style:none; }
#org-info-js_console-label { font-size:10px; font-weight:bold;
white-space:nowrap; }
.org-info-js_search-highlight {background-color:#ffff00; color:#000000;
font-weight:bold; }
/*]]>*/-->
</style>
<script type="text/javascript">
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*/-->
</script>
</head><body>
<h1 class="title">Salesian Vocabulary</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#sec-1">1 Abstract </a></li>
<li><a href="#sec-2">2 Other formats: RDF/XML | JSON | Turtle </a></li>
<li><a href="#sec-3">3 History </a></li>
<li><a href="#sec-4">4 Namespace </a></li>
<li><a href="#sec-5">5 Status of this Document </a></li>
<li><a href="#sec-6">6 Alphabetical list of Salesian Vocabulary classes and properties </a>
<ul>
<li><a href="#sec-6.1">6.1 CLASSES </a></li>
<li><a href="#sec-6.2">6.2 PROPERTIES </a></li>
</ul>
</li>
<li><a href="#sec-7">7 Alphabetical list of Event class, properties </a>
<ul>
<li><a href="#sec-7.1">7.1 CLASS </a></li>
<li><a href="#sec-7.2">7.2 PROPERTIES </a></li>
</ul>
</li>
<li><a href="#sec-8">8 All Classes and properties </a>
<ul>
<li><a href="#sec-8.1">8.1 CLASSES </a>
<ul>
<li><a href="#sec-8.1.1">8.1.1 Thing </a></li>
<li><a href="#sec-8.1.2">8.1.2 Class </a></li>
<li><a href="#sec-8.1.3">8.1.3 TermBase </a></li>
<li><a href="#sec-8.1.4">8.1.4 Code </a></li>
<li><a href="#sec-8.1.5">8.1.5 Term </a></li>
<li><a href="#sec-8.1.6">8.1.6 Classification </a></li>
<li><a href="#sec-8.1.7">8.1.7 House </a></li>
<li><a href="#sec-8.1.8">8.1.8 ServiceOfAuthority </a></li>
<li><a href="#sec-8.1.9">8.1.9 Sector </a></li>
<li><a href="#sec-8.1.10">8.1.10 Formation </a></li>
<li><a href="#sec-8.1.11">8.1.11 SalesianFamily </a></li>
<li><a href="#sec-8.1.12">8.1.12 Holiness </a></li>
<li><a href="#sec-8.1.13">8.1.13 Province </a></li>
<li><a href="#sec-8.1.14">8.1.14 OrganizationalUnit </a></li>
<li><a href="#sec-8.1.15">8.1.15 Work </a></li>
<li><a href="#sec-8.1.16">8.1.16 FormalOrganization </a></li>
<li><a href="#sec-8.1.17">8.1.17 Country </a></li>
<li><a href="#sec-8.1.18">8.1.18 Concept </a></li>
<li><a href="#sec-8.1.19">8.1.19 ConceptScheme </a></li>
<li><a href="#sec-8.1.20">8.1.20 Document </a></li>
<li><a href="#sec-8.1.21">8.1.21 Dataset </a></li>
<li><a href="#sec-8.1.22">8.1.22 PostalAddress </a></li>
<li><a href="#sec-8.1.23">8.1.23 Person </a></li>
<li><a href="#sec-8.1.24">8.1.24 Place </a></li>
<li><a href="#sec-8.1.25">8.1.25 GeoCoordinates </a></li>
<li><a href="#sec-8.1.26">8.1.26 ContactPoint </a></li>
</ul>
</li>
<li><a href="#sec-8.2">8.2 PROPERTIES </a>
<ul>
<li><a href="#sec-8.2.1">8.2.1 upperLevelConcept </a></li>
<li><a href="#sec-8.2.2">8.2.2 provinceCode </a></li>
<li><a href="#sec-8.2.3">8.2.3 regionClassification </a></li>
<li><a href="#sec-8.2.4">8.2.4 inCountry </a></li>
<li><a href="#sec-8.2.5">8.2.5 homepage </a></li>
<li><a href="#sec-8.2.6">8.2.6 primaryTopic </a></li>
<li><a href="#sec-8.2.7">8.2.7 isPrimaryTopicOf </a></li>
<li><a href="#sec-8.2.8">8.2.8 generalCouncil </a></li>
<li><a href="#sec-8.2.9">8.2.9 generalAdministration </a></li>
<li><a href="#sec-8.2.10">8.2.10 provincialAdministration </a></li>
<li><a href="#sec-8.2.11">8.2.11 provincialSupport </a></li>
<li><a href="#sec-8.2.12">8.2.12 supportUnit </a></li>
<li><a href="#sec-8.2.13">8.2.13 localAdministration </a></li>
<li><a href="#sec-8.2.14">8.2.14 roleClassification </a></li>
<li><a href="#sec-8.2.15">8.2.15 statusClassification </a></li>
<li><a href="#sec-8.2.16">8.2.16 statusClassificationNovice </a></li>
<li><a href="#sec-8.2.17">8.2.17 statusClassificationDeacon </a></li>
<li><a href="#sec-8.2.18">8.2.18 statusClassificationBrother </a></li>
<li><a href="#sec-8.2.19">8.2.19 professed </a></li>
<li><a href="#sec-8.2.20">8.2.20 temporaryVows </a></li>
<li><a href="#sec-8.2.21">8.2.21 perpetualVows </a></li>
<li><a href="#sec-8.2.22">8.2.22 formativePhase </a></li>
<li><a href="#sec-8.2.23">8.2.23 separated </a></li>
<li><a href="#sec-8.2.24">8.2.24 linkedTo </a></li>
<li><a href="#sec-8.2.25">8.2.25 hasMembership </a></li>
<li><a href="#sec-8.2.26">8.2.26 isholy </a></li>
<li><a href="#sec-8.2.27">8.2.27 isSalesian </a></li>
<li><a href="#sec-8.2.28">8.2.28 isEmployee </a></li>
<li><a href="#sec-8.2.29">8.2.29 addressCountry </a></li>
<li><a href="#sec-8.2.30">8.2.30 addressLocality </a></li>
<li><a href="#sec-8.2.31">8.2.31 addressRegion </a></li>
<li><a href="#sec-8.2.32">8.2.32 postOfficeBoxNumber </a></li>
<li><a href="#sec-8.2.33">8.2.33 postalCode </a></li>
<li><a href="#sec-8.2.34">8.2.34 streetAddress </a></li>
<li><a href="#sec-8.2.35">8.2.35 contactType </a></li>
<li><a href="#sec-8.2.36">8.2.36 email </a></li>
<li><a href="#sec-8.2.37">8.2.37 faxNumber </a></li>
<li><a href="#sec-8.2.38">8.2.38 telephone </a></li>
<li><a href="#sec-8.2.39">8.2.39 geo </a></li>
<li><a href="#sec-8.2.40">8.2.40 map </a></li>
<li><a href="#sec-8.2.41">8.2.41 photo </a></li>
<li><a href="#sec-8.2.42">8.2.42 elevation </a></li>
<li><a href="#sec-8.2.43">8.2.43 latitude </a></li>
<li><a href="#sec-8.2.44">8.2.44 longitude </a></li>
</ul>
</li>
<li><a href="#sec-8.3">8.3 EVENT CLASS </a>
<ul>
<li><a href="#sec-8.3.1">8.3.1 Event </a></li>
</ul>
</li>
<li><a href="#sec-8.4">8.4 EVENT PROPERTIES </a>
<ul>
<li><a href="#sec-8.4.1">8.4.1 atPlace </a></li>
<li><a href="#sec-8.4.2">8.4.2 atTime </a></li>
<li><a href="#sec-8.4.3">8.4.3 circa </a></li>
<li><a href="#sec-8.4.4">8.4.4 illustrate </a></li>
<li><a href="#sec-8.4.5">8.4.5 inSpace </a></li>
<li><a href="#sec-8.4.6">8.4.6 involved </a></li>
<li><a href="#sec-8.4.7">8.4.7 involvedAgent </a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-1" class="outline-2">
<h2 id="sec-1">1 Abstract </h2>
<div id="text-1">
<p><i>Salesian Vocabulary</i>: a vocabulary for describing the Religious Institute known as the Salesians of Don Bosco (or more formally as the Society of St Francis of Sales), a consecrated life group in the Roman Catholic Church. It was put together particuarly, though, to deal with the Salesian Congregation's central web site and the database upon which that rests. Other Salesian web sites may share a number of tables or fields in that database (though possibly under different titles) and to that extent this vocabulary could be useful for them. It may also provide a model for other consecrated life groups who wish to share some of their data.
</p>
<p>
This vocabulary builds on two earlier vocabularies (which continue in their own right): The <i>Salesian Termbase</i> (<a href="http://www.sdb.org/pmwiki/pmwiki.php">http://www.sdb.org/pmwiki/pmwiki.php</a>) and the <i>Consecrated Life Vocabulary</i> (<a href="http://www.sdb.org/vocabulary/ConsecratedLife#">http://www.sdb.org/vocabulary/ConsecratedLife#</a>) both with their permanent namespaces as just indicated.
</p>
<p>
There is an essential difference between a simple taxonomy or dictionary of terms and a 'vocabulary' which is at least heading in the direction of being an ontology. The former would be a simple list of terms. The latter seeks to describe concepts rather than terms. <i>Salesian Termbase</i> is a glossary, effectively, but it already includes indicators for ontological organization (upper level concepts, sectors etc). At any rate, since it covers Salesian life in an extensive way, it is regarded here as an adequate 'vocabulary' for our purposes. The <i>Consecrated Life Vocabulary</i> has only recently been brought to the stage it is currently in. Each element is still in testing status, but again the <i>Salesian Vocabulary</i> relies on it extensively, either by direct reference or by incorporating its features.
</p>
<p>
One of the recommendations for creating semantic web vocabularies is to re-use existing vocabularies or at least some terms from them where possible. This practice is evident in the current vocabulary: other than the aforementioned Salesian or consecrated life-based vocabularies, SKOS, FOAF, GEO, ORG are amongst the other ontologies and vocabularies brought into <i>Salesian Vocabulary</i> and indeed, in cases where this latter has no appropriate class or property, other vocabularies can be called upon.
</p>
<p>
There is one additional vocabulary called upon - the more recent Schema.org vocabulary supported by Google, Yahoo and Bing. Elements are drawn from this set for description of an organization such as a Salesian 'work' (school, youth centre, whatever) and the various associated properties. Whatever the future - as yet uncertain - of the developing semantic web scene, it seems a good bet to move with the major search engines. In the case of the vocabulary in question, they have gone out on a limb somewhat with regard to the more 'purist' approach to semantic vocabularies. But the overall conception of the Schema.org vocabulary is extensive and relatively simply expressed. It may help our NGO and other associated operations in developing their semantic web approach.
</p></div>
</div>
<div id="outline-container-2" class="outline-2">
<h2 id="sec-2">2 Other formats: RDF/XML | JSON | Turtle </h2>
<div id="text-2">
<p><a href="http://www.sdb.org/vocabulary/salesian.rdf">RDF/XML</a> <a href="http://www.sdb.org/vocabulary/salesian.json">JSON</a> <a href="http://www.sdb.org/vocabulary/salesian.ttl">Turtle</a>
</p></div>
</div>
<div id="outline-container-3" class="outline-2">
<h2 id="sec-3">3 History </h2>
<div id="text-3">
<p>This Version:
<a href="http://www.sdb.org/vocabulary/salesian#">http://www.sdb.org/vocabulary/salesian#</a>
Latest Version:
<a href="http://www.sdb.org/vocabulary/salesian#">http://www.sdb.org/vocabulary/salesian#</a>
Previous Version: There is none.
</p></div>
</div>
<div id="outline-container-4" class="outline-2">
<h2 id="sec-4">4 Namespace </h2>
<div id="text-4">
<p>The URI for this vocabulary is: <a href="http://www.sdb.org/vocabulary/salesian#">http://www.sdb.org/vocabulary/salesian#</a>
</p>
<p>
When abbreviating terms the suggested prefix is <i>sdb</i>.
</p>
<p>
Editors:
Salesian Social Communications Department: <a href="mailto:admin@sdb.org">mailto:admin@sdb.org</a>
Contributor:
Julian Fox sdb
</p></div>
</div>
<div id="outline-container-5" class="outline-2">
<h2 id="sec-5">5 Status of this Document </h2>
<div id="text-5">
<p>This document is open for review by others who feel they can contribute. The objective is to enhance the witness and effectiveness of websites belonging to the Salesian Congregation in the overall context of the Web, by promoting open data where it is possible and desirable to do so and the means to link such data. This approach can enhance interoperability in many instances where it is particularly desirable, e.g. linking data amongst not-for-profit organizations and activities managed by and/or in the name of the Congregation.
</p>
<p>
The intended public is invited to send comments to <a href="mailto:admin@sdb.org">mailto:admin@sdb.org</a>
</p>
<p>
This section describes the status of this document at the time of its publication. Other documents may supersede this document. It is to be noted that the EVENT class and properties are simply included here for reference rather than being incoporated as such into the Vocabulary.
</p></div>
</div>
<div id="outline-container-6" class="outline-2">
<h2 id="sec-6">6 Alphabetical list of Salesian Vocabulary classes and properties </h2>
<div id="text-6">
</div>
<div id="outline-container-6.1" class="outline-3">
<h3 id="sec-6.1">6.1 CLASSES </h3>
<div id="text-6.1">
<p><a href="#sec-8.1.2">Class</a> <a href="#sec-8.1.6">Classification</a> <a href="#sec-8.1.4">Code</a> <a href="#sec-8.1.18">Concept</a> <a href="#sec-8.1.19">ConceptScheme</a> <a href="#sec-8.1.26">ContactPoint</a> <a href="#sec-8.1.17">Country</a> <a href="#sec-8.1.21">Dataset</a> <a href="#sec-8.1.20">Document</a> <a href="#sec-8.3.1">Event</a> <a href="#sec-8.1.16">FormalOrganization</a> <a href="#sec-8.1.10">Formation</a> <a href="#sec-8.1.25">Geocoordinates</a> <a href="#sec-8.1.12">Holiness</a> <a href="#sec-8.1.7">House</a> <a href="#sec-8.1.14">Organizationalunit</a> <a href="#sec-8.1.23">Person</a> <a href="#sec-8.1.24">Place</a> <a href="#sec-8.1.22">PostalAddress</a> <a href="#sec-8.1.13">Province</a> <a href="#sec-8.1.11">SalesianFamily</a> <a href="#sec-8.1.9">Sector</a> <a href="#sec-8.1.8">ServiceOfAuthority</a> <a href="#sec-8.1.5">Term</a> <a href="#sec-8.1.3">TermBase</a> <a href="#sec-8.1.1">Thing</a> <a href="#sec-8.1.15">Work</a>
</p></div>
</div>
<div id="outline-container-6.2" class="outline-3">
<h3 id="sec-6.2">6.2 PROPERTIES </h3>
<div id="text-6.2">
<p><a href="#sec-8.2.29">addressCountry</a> <a href="#sec-8.2.30">addressLocality</a> <a href="#sec-8.2.31">addressRegion</a> <a href="#sec-8.2.35">contactType</a> <a href="#sec-8.2.42">elevation</a> <a href="#sec-8.2.36">email</a> <a href="#sec-8.2.37">faxNumber</a> <a href="#sec-8.2.22">formativePhase</a> <a href="#sec-8.2.9">generalAdministration</a> <a href="#sec-8.2.8">generalCouncil</a> <a href="#sec-8.2.39">geo</a> <a href="#sec-8.2.25">hasMembership</a> <a href="#sec-8.2.5">homepage</a> <a href="#sec-8.2.4">inCountry</a> <a href="#sec-8.2.28">isEmployee</a> <a href="#sec-8.2.26">isHoly</a> <a href="#sec-8.2.7">isPrimaryTopicOf</a> <a href="#sec-8.2.27">isSalesian</a> <a href="#sec-8.2.43">latitude</a> <a href="#sec-8.2.24">linkedTo</a> <a href="#sec-8.2.13">localAdministration</a> <a href="#sec-8.2.44">longitude</a> <a href="#sec-8.2.40">map</a> <a href="#sec-8.2.21">perpetualVows</a> <a href="#sec-8.2.41">photo</a> <a href="#sec-8.2.33">postalCode</a> <a href="#sec-8.2.32">postOfficeBoxNumber</a> <a href="#sec-8.2.2">provinceCode</a> <a href="#sec-8.2.10">provincialAdministration</a> <a href="#sec-8.2.11">provincialSupport</a> <a href="#sec-8.2.6">primaryTopic</a> <a href="#sec-8.2.19">professed</a> <a href="#sec-8.2.3">regionClassification</a> <a href="#sec-8.2.14">roleClassification</a> <a href="#sec-8.2.23">separated</a> <a href="#sec-8.2.15">statusClassification</a> <a href="#sec-8.2.16">statusClassificationNovice</a> <a href="#sec-8.2.17">statusClassificationDeacon</a> <a href="#sec-8.2.18">statusClassificationBrother</a> <a href="#sec-8.2.34">streetAddress</a> <a href="#sec-8.2.12">supportUnit</a> <a href="#sec-8.2.38">telephone</a> <a href="#sec-8.2.20">temporaryVows</a> <a href="#sec-8.2.1">upperLevelConcept</a>
</p></div>
</div>
</div>
<div id="outline-container-7" class="outline-2">
<h2 id="sec-7">7 Alphabetical list of Event class, properties </h2>
<div id="text-7">
</div>
<div id="outline-container-7.1" class="outline-3">
<h3 id="sec-7.1">7.1 CLASS </h3>
<div id="text-7.1">
<p><a href="#sec-8.3.1">Event</a>
</p></div>
</div>
<div id="outline-container-7.2" class="outline-3">
<h3 id="sec-7.2">7.2 PROPERTIES </h3>
<div id="text-7.2">
<p><a href="#sec-8.4.3">circa</a> <a href="#sec-8.4.1">atPlace</a> <a href="#sec-8.4.2">atTime</a> <a href="#sec-8.4.4">illustrate</a> <a href="#sec-8.4.5">inSpace</a> <a href="#sec-8.4.6">involved</a> <a href="#sec-8.4.7">involvedAgent</a>
</p></div>
</div>
</div>
<div id="outline-container-8" class="outline-2">
<h2 id="sec-8">8 All Classes and properties </h2>
<div id="text-8">
</div>
<div id="outline-container-8.1" class="outline-3">
<h3 id="sec-8.1">8.1 CLASSES </h3>
<div id="text-8.1">
</div>
<div id="outline-container-8.1.1" class="outline-4"><a name="Thing"></a>
<h4 id="sec-8.1.1">8.1.1 <span class="target">Thing</span> </h4>
<div id="text-8.1.1">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Thing">http://www.sdb.org/vocabulary/salesian#Thing</a>
</p>
<p>
<b>label</b>: Thing
</p>
<p>
<b>comment</b>: OWL introduces the class 'Thing' as a name for the universal class of all things. This is sometimes useful when we want to express universality of property use. Theoretically, for example, any 'thing' can have a homepage.
</p>
</div>
</div>
<div id="outline-container-8.1.2" class="outline-4"><a name="Class"></a>
<h4 id="sec-8.1.2">8.1.2 <span class="target">Class</span> </h4>
<div id="text-8.1.2">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Class">http://www.sdb.org/vocabulary/salesian#Class</a>
</p>
<p>
<b>label</b>: Class
</p>
<p>
<b>comment</b>: A class of elements, terms
</p>
<p>
<b>sub class of</b>: skos:ConceptScheme, <a href="http://www.w3.org/2004/02/skos/core#ConceptScheme">http://www.w3.org/2004/02/skos/core#ConceptScheme</a>
</p>
</div>
</div>
<div id="outline-container-8.1.3" class="outline-4"><a name="TermBase"></a>
<h4 id="sec-8.1.3">8.1.3 <span class="target">TermBase</span> </h4>
<div id="text-8.1.3">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#TermBase">http://www.sdb.org/vocabulary/salesian#TermBase</a>
</p>
<p>
<b>label</b>: Term Base
</p>
<p>
<b>comment</b>: The class of all (Salesian) terms
</p>
<p>
<b>sub class of</b>: skos:ConceptScheme, <a href="http://www.w3.org/2004/02/skos/core#ConceptScheme">http://www.w3.org/2004/02/skos/core#ConceptScheme</a>
</p>
</div>
</div>
<div id="outline-container-8.1.4" class="outline-4"><a name="Code"></a>
<h4 id="sec-8.1.4">8.1.4 <span class="target">Code</span> </h4>
<div id="text-8.1.4">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Code">http://www.sdb.org/vocabulary/salesian#Code</a>
</p>
<p>
<b>label</b>: Code
</p>
<p>
<b>comment</b>: a rule for converting a piece of information (for example, a province or region or group) into another form or representation. Thus AFO follows a rule which indicates that Salesian Provinces will have a 3 letter code. In this case it stands for Africa Francofona Orientale.
</p>
<p>
<b>sub class of</b>: skos:Concept, <a href="http://www.w3.org/2004/02/skos/core#Concept">http://www.w3.org/2004/02/skos/core#Concept</a>
</p>
</div>
</div>
<div id="outline-container-8.1.5" class="outline-4"><a name="Term"></a>
<h4 id="sec-8.1.5">8.1.5 <span class="target">Term</span> </h4>
<div id="text-8.1.5">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Term">http://www.sdb.org/vocabulary/salesian#Term</a>
</p>
<p>
<b>label</b>: Term
</p>
<p>
<b>comment</b>: A term, which may involve one or more words, as found in Salesian Termbase
</p>
<p>
<b>sub class of</b>: skos:Concept, <a href="http://www.w3.org/2004/02/skos/core#Concept">http://www.w3.org/2004/02/skos/core#Concept</a>
</p>
</div>
</div>
<div id="outline-container-8.1.6" class="outline-4"><a name="Classification"></a>
<h4 id="sec-8.1.6">8.1.6 <span class="target">Classification</span> </h4>
<div id="text-8.1.6">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Classification">http://www.sdb.org/vocabulary/salesian#Classification</a>
</p>
<p>
<b>label</b>: Classification
</p>
<p>
<b>comment</b>: A classification scheme in use within the Salesian Congregation or Family
</p>
<p>
<b>sub class of</b>: skos:Concept, <a href="http://www.w3.org/2004/02/skos/core#Concept">http://www.w3.org/2004/02/skos/core#Concept</a>
</p>
</div>
</div>
<div id="outline-container-8.1.7" class="outline-4"><a name="House"></a>
<h4 id="sec-8.1.7">8.1.7 <span class="target">House</span> </h4>
<div id="text-8.1.7">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#House">http://www.sdb.org/vocabulary/salesian#House</a>
</p>
<p>
<b>label</b>:House
</p>
<p>
<b>comment</b>: A lawfully constituted community under the authority of a Superior designated by law. The term interprets 'lawfully constituted' broadly here to include a presence set up by due religious authority but not canonically constituted (it may have a 'priest in charge')
</p>
<p>
<b>sub class of</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#Institute">http://www.sdb.org/vocabulary/ConsecratedLife#Institute</a>
</p>
</div>
</div>
<div id="outline-container-8.1.8" class="outline-4"><a name="ServiceOfAuthority"></a>
<h4 id="sec-8.1.8">8.1.8 <span class="target">ServiceOfAuthority</span> </h4>
<div id="text-8.1.8">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#ServiceOfAuthority">http://www.sdb.org/vocabulary/salesian#ServiceOfAuthority</a>
</p>
<p>
<b>label</b>: Service of Authority
</p>
<p>
<b>comment</b>: a role (of authority) a person or other agent plays in the Salesian Congregation. Usually a person is established as a sign of unity and a guide in discerning God's will, which is the role of the Superior, or Rector.
</p>
<p>
<b>sub class of</b>: skos:Concept, <a href="http://www.w3.org/2004/02/skos/core#Concept">http://www.w3.org/2004/02/skos/core#Concept</a>
</p>
</div>
</div>
<div id="outline-container-8.1.9" class="outline-4"><a name="Sector"></a>
<h4 id="sec-8.1.9">8.1.9 <span class="target">Sector</span> </h4>
<div id="text-8.1.9">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Sector">http://www.sdb.org/vocabulary/salesian#Sector</a>
</p>
<p>
<b>label</b>: Sector
</p>
<p>
<b>comment</b>: A charismatic area of Salesian mission as indicated by the Salesian Constitutions (cf Italian edition C. 133, 134).
</p>
<p>
<b>sub class of</b>: skos:Concept, <a href="http://www.w3.org/2004/02/skos/core#Concept">http://www.w3.org/2004/02/skos/core#Concept</a>
</p>
</div>
</div>
<div id="outline-container-8.1.10" class="outline-4"><a name="Formation"></a>
<h4 id="sec-8.1.10">8.1.10 <span class="target">Formation</span> </h4>
<div id="text-8.1.10">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Formation">http://www.sdb.org/vocabulary/salesian#Formation</a>
</p>
<p>
<b>Label</b>: Formation
</p>
<p>
<b>comment</b>: Included here as a Class since Formation is so central to the activity of any consecrated life group. it is the personal accompaniment of an individual, the stages reached in the process of personal growth towards completeness as a human being. For particular phases where they might be considered subclasses (subjects) such as 'initial formation', 'ongoing formation', 'special formation', 'quinquennium' etc. this class can be used to cover that phase too. Where it is a case of a process (a relationship of a formative nature at initial, ongoing etc. level) cf. formativePhase property
</p>
</div>
</div>
<div id="outline-container-8.1.11" class="outline-4"><a name="SalesianFamily"></a>
<h4 id="sec-8.1.11">8.1.11 <span class="target">SalesianFamily</span> </h4>
<div id="text-8.1.11">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#SalesianFamily">http://www.sdb.org/vocabulary/salesian#SalesianFamily</a>
</p>
<p>
<b>label</b>:Salesian Family
</p>
<p>
<b>comment</b>: stands for the Salesian Family which has come into being around Don Bosco's charism
</p>
<p>
<b>sub class of</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#ReligiousFamily">http://www.sdb.org/vocabulary/ConsecratedLife#ReligiousFamily</a>
</p>
</div>
</div>
<div id="outline-container-8.1.12" class="outline-4"><a name="Holiness"></a>
<h4 id="sec-8.1.12">8.1.12 <span class="target">Holiness</span> </h4>
<div id="text-8.1.12">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Holiness">http://www.sdb.org/vocabulary/salesian#Holiness</a>
</p>
<p>
<b>label</b>: Holiness
</p>
<p>
<b>comment</b>: A formally declared state regarding a deceased Salesian confrere renowned for holiness and for whom a Cause for Canonization has been introduced or concluded (in which case is a Saint)
</p>
<p>
<b>sub class of</b>: skos:Concept, <a href="http://www.w3.org/2004/02/skos/core#Concept">http://www.w3.org/2004/02/skos/core#Concept</a>
</p>
</div>
</div>
<div id="outline-container-8.1.13" class="outline-4"><a name="Province"></a>
<h4 id="sec-8.1.13">8.1.13 <span class="target">Province</span> </h4>
<div id="text-8.1.13">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Province">http://www.sdb.org/vocabulary/salesian#Province</a>
</p>
<p>
<b>label</b>: Province
</p>
<p>
<b>comment</b>: The province unites the different local communities in one large community. It is canonically erected when the necessary and sufficient conditions exist for promoting in a special juridical circumscription the life and mission of the Congregation with the autonomy that belongs to it according to the Constitutions.
</p>
<p>
<b>sub class of</b>: skos:Concept, <a href="http://www.w3.org/2004/02/skos/core#Concept">http://www.w3.org/2004/02/skos/core#Concept</a>
</p></div>
</div>
<div id="outline-container-8.1.14" class="outline-4"><a name="OrganizationalUnit"></a>
<h4 id="sec-8.1.14">8.1.14 <span class="target">OrganizationalUnit</span> </h4>
<div id="text-8.1.14">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#OrganizationalUnit">http://www.sdb.org/vocabulary/salesian#OrganizationalUnit</a>
</p>
<p>
<b>label</b>: Organizational Unit
</p>
<p>
<b>comment</b>: a unit which has recognition within the Salesian Congregation (and possibly within the wider Salesian Family) but no juridical status as such
</p>
<p>
<b>sub class of</b>: org:organization, <a href="http://www.w3.org/ns/org#Organization">http://www.w3.org/ns/org#Organization</a>
</p>
<p>
<b>sub class of</b>: clv:Institute, <a href="http://www.sdb.org/vocabulary/ConsecratedLife#Institute">http://www.sdb.org/vocabulary/ConsecratedLife#Institute</a>
</p>
</div>
</div>
<div id="outline-container-8.1.15" class="outline-4"><a name="Work"></a>
<h4 id="sec-8.1.15">8.1.15 <span class="target">Work</span> </h4>
<div id="text-8.1.15">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Work">http://www.sdb.org/vocabulary/salesian#Work</a>
</p>
<p>
<b>label</b>: Work
</p>
<p>
<b>comment</b>: Essentially the Schema.org 'Organization' class, except that we suggest it be restricted to a 'Salesian work' such as a school, youth centre or other work which clearly exhibits the charism and particularly the 'home, school, parish, playground' Oratory criteria. For other organizations (e.g. NGO or other organization asssociated, even closely, with a Salesian community or the Salesian Society, we suggest the 'Formal Organization' class.
</p></div>
</div>
<div id="outline-container-8.1.16" class="outline-4"><a name="FormalOrganization"></a>
<h4 id="sec-8.1.16">8.1.16 <span class="target">FormalOrganization</span> </h4>
<div id="text-8.1.16">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#FormalOrganization">http://www.sdb.org/vocabulary/salesian#FormalOrganization</a>
</p>
<p>
<b>label</b>: Formal Organization
</p>
<p>
<b>comment</b>: In reference to an organization which may be an extension of a Sector's activities in wider civil society, or at least closely linked to the Salesian Mission (e.g. a Salesian NGO, or NGO Network such as Don Bosco International, Don Bosco YouthNet…)
</p>
<p>
<b>comment</b>: It may be useful to use the property linkedTo indicated below to establish that there is a link between the Salesian Congregation and the organization
</p>
<p>
<b>sub class of</b>: org:Organization, <a href="http://www.w3.org/ns/org#Organization">http://www.w3.org/ns/org#Organization</a>
</p>
</div>
</div>
<div id="outline-container-8.1.17" class="outline-4"><a name="Country"></a>
<h4 id="sec-8.1.17">8.1.17 <span class="target">Country</span> </h4>
<div id="text-8.1.17">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Country">http://www.sdb.org/vocabulary/salesian#Country</a>
</p>
<p>
<b>label</b>: Country
</p>
<p>
<b>comment</b>: A country as defined at <a href="http://www.geonames.org/countries">http://www.geonames.org/countries</a>
</p>
</div>
</div>
<div id="outline-container-8.1.18" class="outline-4"><a name="Concept"></a>
<h4 id="sec-8.1.18">8.1.18 <span class="target">Concept</span> </h4>
<div id="text-8.1.18">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Concept">http://www.sdb.org/vocabulary/salesian#Concept</a>
</p>
<p>
<b>label</b>: Concept
</p>
<p>
<b>is defined by</b>: <a href="http://www.w3.org/2004/02/skos/core#Concept">http://www.w3.org/2004/02/skos/core#Concept</a>
</p>
</div>
</div>
<div id="outline-container-8.1.19" class="outline-4"><a name="ConceptScheme"></a>
<h4 id="sec-8.1.19">8.1.19 <span class="target">ConceptScheme</span> </h4>
<div id="text-8.1.19">
<p><b>URI</b>: <a href="http://www.w3.org/2004/02/skos/core#ConceptScheme">http://www.w3.org/2004/02/skos/core#ConceptScheme</a>
</p>
<p>
<b>label</b>: Concept Scheme
</p>
<p>
<b>is defined by</b>: <a href="http://www.w3.org/2004/02/skos/core#ConceptScheme">http://www.w3.org/2004/02/skos/core#ConceptScheme</a>
</p>
</div>
</div>
<div id="outline-container-8.1.20" class="outline-4"><a name="Document"></a>
<h4 id="sec-8.1.20">8.1.20 <span class="target">Document</span> </h4>
<div id="text-8.1.20">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Document">http://www.sdb.org/vocabulary/salesian#Document</a>
</p>
<p>
<b>label</b>: Document
</p>
<p>
<b>comment</b>: A foaf class, representing those things (physical, electronic) broadly conceived of as a 'document'. In the foaf definition any image or other resource can be of the 'Document' class. Cf. <a href="http://xmlns.com/foaf/0.1/Document">http://xmlns.com/foaf/0.1/Document</a>
</p></div>
</div>
<div id="outline-container-8.1.21" class="outline-4"><a name="Dataset"></a>
<h4 id="sec-8.1.21">8.1.21 <span class="target">Dataset</span> </h4>
<div id="text-8.1.21">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Dataset">http://www.sdb.org/vocabulary/salesian#Dataset</a>
</p>
<p>
<b>label</b>: Dataset
</p>
<p>
<b>comment</b>: A DCMI Type class: data encoded in a defined structure, which could be a list, a spreadsheet, database etc. Cf. <a href="http://purl.org/dc/dcmitype/Dataset">http://purl.org/dc/dcmitype/Dataset</a>
</p></div>
</div>
<div id="outline-container-8.1.22" class="outline-4"><a name="PostalAddress"></a>
<h4 id="sec-8.1.22">8.1.22 <span class="target">PostalAddress</span> </h4>
<div id="text-8.1.22">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#PostalAddress">http://www.sdb.org/vocabulary/salesian#PostalAddress</a>
</p>
<p>
<b>label</b>: Postal Address
</p>
<p>
<b>comment</b>: A schema.org class, representing a mailing address. The physical address (not internet address).
</p></div>
</div>
<div id="outline-container-8.1.23" class="outline-4"><a name="Person"></a>
<h4 id="sec-8.1.23">8.1.23 <span class="target">Person</span> </h4>
<div id="text-8.1.23">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Person">http://www.sdb.org/vocabulary/salesian#Person</a>
</p>
<p>
<b>label</b>: Person
</p>
<p>
<b>comment</b>: Any person, Salesian or employee.
</p></div>
</div>
<div id="outline-container-8.1.24" class="outline-4"><a name="Place"></a>
<h4 id="sec-8.1.24">8.1.24 <span class="target">Place</span> </h4>
<div id="text-8.1.24">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#Place">http://www.sdb.org/vocabulary/salesian#Place</a>
</p>
<p>
<b>label</b>: Place
</p>
<p>
<b>comment</b>: Entities that have a somewhat fixed, physical extension.
</p></div>
</div>
<div id="outline-container-8.1.25" class="outline-4"><a name="GeoCoordinates"></a>
<h4 id="sec-8.1.25">8.1.25 <span class="target">GeoCoordinates</span> </h4>
<div id="text-8.1.25">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#GeoCoordinates">http://www.sdb.org/vocabulary/salesian#GeoCoordinates</a>
</p>
<p>
<b>label</b>: Geo coordinates
</p>
<p>
<b>comment</b>: The geo coordinates of a place.
</p></div>
</div>
<div id="outline-container-8.1.26" class="outline-4"><a name="ContactPoint"></a>
<h4 id="sec-8.1.26">8.1.26 <span class="target">ContactPoint</span> </h4>
<div id="text-8.1.26">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#ContactPoint">http://www.sdb.org/vocabulary/salesian#ContactPoint</a>
</p>
<p>
<b>label</b>: Contact Point
</p>
<p>
<b>comment</b>: A contact point for a person or organization.
</p></div>
</div>
</div>
<div id="outline-container-8.2" class="outline-3">
<h3 id="sec-8.2">8.2 PROPERTIES </h3>
<div id="text-8.2">
</div>
<div id="outline-container-8.2.1" class="outline-4"><a name="upperLevelConcept"></a>
<h4 id="sec-8.2.1">8.2.1 <span class="target">upperLevelConcept</span> </h4>
<div id="text-8.2.1">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#upperLevelConcept">http://www.sdb.org/vocabulary/salesian#upperLevelConcept</a>
</p>
<p>
<b>label</b>: upper level concept
</p>
<p>
<b>comment</b>: A main concept catetgory, as defined in Salesian Termbase (thus a property of 'Concept', essentially to do with charism, institution and mission as indicated in the Termbase).
</p>
<p>
<b>domain</b>: Having this property implies being a term in Salesian Termbase, <a href="http://www.sdb.org/pmwiki/pmwiki.php">http://www.sdb.org/pmwiki/pmwiki.php</a>
</p>
<p>
<b>domain</b>: Having this property implies being a <a href="http://www.w3.org/2004/02/skos/core#Concept">http://www.w3.org/2004/02/skos/core#Concept</a>
</p>
<p>
<b>range</b>: Values of this property are Charism, Salesian holiness, Salesian history, Institution and Mission as found in
<a href="http://www.sdb.org/pmwiki/pmwiki.php">http://www.sdb.org/pmwiki/pmwiki.php</a>
</p>
</div>
</div>
<div id="outline-container-8.2.2" class="outline-4"><a name="provinceCode"></a>
<h4 id="sec-8.2.2">8.2.2 <span class="target">provinceCode</span> </h4>
<div id="text-8.2.2">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#provinceCode">http://www.sdb.org/vocabulary/salesian#provinceCode</a>
</p>
<p>
<b>label</b>: province code
</p>
<p>
<b>comment</b>: 3 letter code as defined in Salesian Termbase <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.ProvinceCode">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.ProvinceCode</a>
</p>
<p>
<b>is defined by</b>: <a href="http://www.geonames.org/ontology#">http://www.geonames.org/ontology#</a>
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#Code">http://www.sdb.org/vocabulary/salesian#Code</a>
</p>
<p>
<b>range</b>: <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.ProvinceCode">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.ProvinceCode</a>
</p>
</div>
</div>
<div id="outline-container-8.2.3" class="outline-4"><a name="regionClassification"></a>
<h4 id="sec-8.2.3">8.2.3 <span class="target">regionClassification</span> </h4>
<div id="text-8.2.3">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#regionClassification">http://www.sdb.org/vocabulary/salesian#regionClassification</a>
</p>
<p>
<b>label</b>: regional classification
</p>
<p>
<b>comment</b>: Region as defined in Salesian Termbase <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Region">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Region</a>
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#Classification">http://www.sdb.org/vocabulary/salesian#Classification</a>
</p>
<p>
<b>range</b>: as defined in the Description in <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Region">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Region</a>
</p>
</div>
</div>
<div id="outline-container-8.2.4" class="outline-4"><a name="inCountry"></a>
<h4 id="sec-8.2.4">8.2.4 <span class="target">inCountry</span> </h4>
<div id="text-8.2.4">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#inCountry">http://www.sdb.org/vocabulary/salesian#inCountry</a>
</p>
<p>
<b>label</b>: country
</p>
<p>
<b>comment</b>: A country in the ISO country list
</p>
<p>
<b>domain</b>: <a href="http://www.geonames.org/ontology#Feature">http://www.geonames.org/ontology#Feature</a>
</p>
<p>
<b>range</b>: <a href="http://www.geonames.org/ontology#Country">http://www.geonames.org/ontology#Country</a>
</p>
</div>
</div>
<div id="outline-container-8.2.5" class="outline-4"><a name="homepage"></a>
<h4 id="sec-8.2.5">8.2.5 <span class="target">homepage</span> </h4>
<div id="text-8.2.5">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#homepage">http://www.sdb.org/vocabulary/salesian#homepage</a>
</p>
<p>
<b>label</b>: homepage
</p>
<p>
<b>comment</b>: From foaf 'homepage'. Many kinds of things have homepages. FOAF allows a thing to have multiple homepages, but constrains homepage so that there can be only one thing that has any particular homepage.
</p>
<p>
A 'homepage' in this sense is a public Web document, typically but not necessarily available in HTML format.
</p>
<p>
<b>domain</b>: foaf Thing, <a href="http://xmlns.com/foaf/spec/#term_Thing">http://xmlns.com/foaf/spec/#term_Thing</a>
</p>
<p>
<b>range</b>: every value of this property is a Document
</p>
</div>
</div>
<div id="outline-container-8.2.6" class="outline-4"><a name="primaryTopic"></a>
<h4 id="sec-8.2.6">8.2.6 <span class="target">primaryTopic</span> </h4>
<div id="text-8.2.6">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/#primaryTopic">http://www.sdb.org/vocabulary/#primaryTopic</a>
</p>
<p>
<b>label</b>: primary topic
</p>
<p>
<b>comment</b>: From foaf 'primaryTopic'. For any document it applies to, it can have at most one value. This is useful, as it allows for data merging. In many cases it may be difficult for third parties to determine the primary topic of a document, but in a useful number of cases it should be reasonably obvious. Documents are very often the most authoritative source of information about their own primary topics
</p>
<p>
<b>domain</b>: having this property implies being a foaf Document, <a href="http://xmlns.com/foaf/spec/#term_Document">http://xmlns.com/foaf/spec/#term_Document</a>
</p>
<p>
<b>range</b>: every value of this property is a foaf Thing
</p></div>
</div>
<div id="outline-container-8.2.7" class="outline-4"><a name="isPrimaryTopicOf"></a>
<h4 id="sec-8.2.7">8.2.7 <span class="target">isPrimaryTopicOf</span> </h4>
<div id="text-8.2.7">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#isPrimaryTopicOf">http://www.sdb.org/vocabulary/salesian#isPrimaryTopicOf</a>
</p>
<p>
<b>label</b>: is primary topic of
</p>
<p>
<b>comment</b>: From foaf 'isPrimaryTopicOf'. Relates something to a document that is mainly about it. For any document that is the value of this property, there is at most one thing in the world that is the primary topic of that document. This is useful, as it allows for data merging.
</p>
<p>
<b>domain</b>: foaf Thing, <a href="http://xmlns.com/foaf/spec/#term_Thing">http://xmlns.com/foaf/spec/#term_Thing</a>
</p>
<p>
<b>range</b>: every value of this property is a Document
</p>
</div>
</div>
<div id="outline-container-8.2.8" class="outline-4"><a name="generalCouncil"></a>
<h4 id="sec-8.2.8">8.2.8 <span class="target">generalCouncil</span> </h4>
<div id="text-8.2.8">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#generalCouncil">http://www.sdb.org/vocabulary/salesian#generalCouncil</a>
</p>
<p>
<b>label</b>: general council
</p>
<p>
<b>comment</b>: Roles filled by individuals who cooperate directly with the Rector Major
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#ServiceOfAuthority">http://www.sdb.org/vocabulary/ConsecratedLife#ServiceOfAuthority</a>
</p>
<p>
<b>range</b>: <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.GeneralCouncil">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.GeneralCouncil</a>
</p>
<p>
<b>range</b>: note that the Procurator and Postulator roles are included even though not technically members of the GC
</p>
</div>
</div>
<div id="outline-container-8.2.9" class="outline-4"><a name="generalAdministration"></a>
<h4 id="sec-8.2.9">8.2.9 <span class="target">generalAdministration</span> </h4>
<div id="text-8.2.9">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#generalAdministration">http://www.sdb.org/vocabulary/salesian#generalAdministration</a>
</p>
<p>
<b>label</b>: general administration
</p>
<p>
<b>comment</b>: Support roles filled by individuals who cooperate directly with the Rector Major and General Council
</p>
<p>
<b>domain</b>: <a href="http://www.w3.org/ns/org#OrganizationalUnit">http://www.w3.org/ns/org#OrganizationalUnit</a>
</p>
<p>
<b>range</b>: Values of this property (people and/or offices) are listed in the description section of <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.GeneralAdministration">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.GeneralAdministration</a>
</p>
</div>
</div>
<div id="outline-container-8.2.10" class="outline-4"><a name="provincialAdministration"></a>
<h4 id="sec-8.2.10">8.2.10 <span class="target">provincialAdministration</span> </h4>
<div id="text-8.2.10">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#provincialAdministration">http://www.sdb.org/vocabulary/salesian#provincialAdministration</a>
</p>
<p>
<b>label</b>: provincial administration
</p>
<p>
<b>comment</b>: This is understood as a service of authority as well as being juridically enshrined
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#ServiceOfAuthority">http://www.sdb.org/vocabulary/ConsecratedLife#ServiceOfAuthority</a>
</p>
<p>
<b>range</b>: Values of this property include Provincial, Vice Provincial, Superior (of a Vice Province), Delegate (of a Delegation), Provincial Economer, Provincial Councillor, Provincial Secretary, Provincial Delegate (for a Sector)
</p>
</div>
</div>
<div id="outline-container-8.2.11" class="outline-4"><a name="provincialSupport"></a>
<h4 id="sec-8.2.11">8.2.11 <span class="target">provincialSupport</span> </h4>
<div id="text-8.2.11">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#provincialSupport">http://www.sdb.org/vocabulary/salesian#provincialSupport</a>
</p>
<p>
<b>label</b>: provincial support
</p>
<p>
<b>comment</b>: Intended to cover other roles and groups at Province level; they may be sub units of Sector organization
</p>
<p>
<b>domain</b>: <a href="http://www.w3.org/ns/org#OrganizationalUnit">http://www.w3.org/ns/org#OrganizationalUnit</a>
</p>
<p>
<b>range</b>: Values of this property include roles responsible under a Sector (e.g. Cooperators or Past Pupils under Salesian Family), or an administrative role (Administrator) which might in fact imply the work of a 'Service of Authority' role but answers to the Provincial or a Member of the Council.
</p>
</div>
</div>
<div id="outline-container-8.2.12" class="outline-4"><a name="supportUnit"></a>
<h4 id="sec-8.2.12">8.2.12 <span class="target">supportUnit</span> </h4>
<div id="text-8.2.12">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#supportUnit">http://www.sdb.org/vocabulary/salesian#supportUnit</a>
</p>
<p>
<b>label</b>: support unit
</p>
<p>
<b>comment</b>: Intended to cover units rather than people at world, regional, province or local level: e.g. departments, consultative groups
</p>
<p>
<b>domain</b>: <a href="http://www.w3.org/ns/org#OrganizationalUnit">http://www.w3.org/ns/org#OrganizationalUnit</a>
</p>
<p>
<b>range</b>: Values include those listed in the description section of <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Department">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Department</a>, plus consultative group or advisory council (Consulta), other ad hoc arrangements (e.g. departments of the Mission),
</p>
</div>
</div>
<div id="outline-container-8.2.13" class="outline-4"><a name="localAdministration"></a>
<h4 id="sec-8.2.13">8.2.13 <span class="target">localAdministration</span> </h4>
<div id="text-8.2.13">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#localAdministration">http://www.sdb.org/vocabulary/salesian#localAdministration</a>
</p>
<p>
<b>label</b>: local administration
</p>
<p>
<b>comment</b>: In reference to a juridically constituted House, but may also apply to a 'presence'
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#ServiceOfAuthority">http://www.sdb.org/vocabulary/ConsecratedLife#ServiceOfAuthority</a>
</p>
<p>
<b>range</b>: Values of this property include Rector (or Superior), Vice Rector, Priest in Charge (or similar term), Bursar (Economer or similar term), Councillor
</p>
</div>
</div>
<div id="outline-container-8.2.14" class="outline-4"><a name="roleClassification"></a>
<h4 id="sec-8.2.14">8.2.14 <span class="target">roleClassification</span> </h4>
<div id="text-8.2.14">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#roleClassification">http://www.sdb.org/vocabulary/salesian#roleClassification</a>
</p>
<p>
<b>label</b>: role classification
</p>
<p>
<b>comment</b>: This applies to the classification of roles listed in the <i>Annuario</i> in its canonical form in Italian, represented by the code in parentheses
</p>
<p>
<b>comment</b>: In certain circumstances just the code may appear
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#Institute">http://www.sdb.org/vocabulary/ConsecratedLife#Institute</a>, and <a href="http://www.sdb.org/vocabulary/salesian#Code">http://www.sdb.org/vocabulary/salesian#Code</a> (where the code applies)
</p>
<p>
<b>range</b>: Values of this property are: Cooperator Delegate (Co), Councillor (Cs), Rector or Director (Dt), Economer or Bursar (Ec), Past Pupils delegate (Ex), Director of Novices (Ma), Director of Oratory (Or), Parish Priest (Pr), Principal (Ps), Rector of Shrine (Rt), Vice Rector (Vc).
</p>
</div>
</div>
<div id="outline-container-8.2.15" class="outline-4"><a name="statusClassification"></a>
<h4 id="sec-8.2.15">8.2.15 <span class="target">statusClassification</span> </h4>
<div id="text-8.2.15">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#statusClassification">http://www.sdb.org/vocabulary/salesian#statusClassification</a>
</p>
<p>
<b>label</b>: status classification
</p>
<p>
<b>comment</b>: This applies to the classification of personal status listed in the Annuario in its canonical form in Latin, represented by the code in parentheses
</p>
<p>
<b>comment</b>: In certain circumstances just the code may appear
</p>
<p>
<b>domain</b>: it could be regarded as an extension of <a href="http://www.sdb.org/vocabulary/ConsecratedLife#designatoryPrefix">http://www.sdb.org/vocabulary/ConsecratedLife#designatoryPrefix</a> but with a specific use only in the Annuario, or of the code alone appears, it belongs to the domain of <a href="http://www.sdb.org/vocabulary/salesian#Code">http://www.sdb.org/vocabulary/salesian#Code</a>
</p>
<p>
<b>range</b>: Values of this property are: Diaconus (D), Episcopus (E), Laicus [Coadjutor] (L), Presbyter (P), Scolasticus (S), Novitius (N)
</p>
</div>
</div>
<div id="outline-container-8.2.16" class="outline-4"><a name="statusClassificationNovice"></a>
<h4 id="sec-8.2.16">8.2.16 <span class="target">statusClassificationNovice</span> </h4>
<div id="text-8.2.16">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#statusClassificationNovice">http://www.sdb.org/vocabulary/salesian#statusClassificationNovice</a>
</p>
<p>
<b>label</b>: novice
</p>
<p>
<b>comment</b>: This applies only when it is necessary to mark up the number of novices in a table such as a statistical table
</p>
<p>
<b>sub property of</b>: <a href="http://www.sdb.org/vocabulary/salesian#statusClassification">http://www.sdb.org/vocabulary/salesian#statusClassification</a>
</p>
</div>
</div>
<div id="outline-container-8.2.17" class="outline-4"><a name="statusClassificationDeacon"></a>
<h4 id="sec-8.2.17">8.2.17 <span class="target">statusClassificationDeacon</span> </h4>
<div id="text-8.2.17">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#statusClassificationDeacon">http://www.sdb.org/vocabulary/salesian#statusClassificationDeacon</a>
</p>
<p>
<b>label</b>: deacon
</p>
<p>
<b>comment</b>: This applies only when it is necessary to mark up the number of deacons in a table such as a statistical table
</p>
<p>
<b>sub property of</b>: <a href="http://www.sdb.org/vocabulary/salesian#statusClassification">http://www.sdb.org/vocabulary/salesian#statusClassification</a>
</p>
<p>
<b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#statusClassificationCleric">http://www.sdb.org/vocabulary/salesian#statusClassificationCleric</a>
</p>
<p>
<b>label</b>: cleric
</p>
<p>
<b>comment</b>: This applies only when it is necessary to mark up the number of clerics/candidates for priesthood in a table such as a statistical table
</p>
<p>
<b>sub property of</b>: <a href="http://www.sdb.org/vocabulary/salesian#statusClassification">http://www.sdb.org/vocabulary/salesian#statusClassification</a>
</p>
</div>
</div>
<div id="outline-container-8.2.18" class="outline-4"><a name="statusClassificationBrother"></a>
<h4 id="sec-8.2.18">8.2.18 <span class="target">statusClassificationBrother</span> </h4>
<div id="text-8.2.18">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#statusClassificationBrother">http://www.sdb.org/vocabulary/salesian#statusClassificationBrother</a>
</p>
<p>
<b>label</b>: brother
</p>
<p>
<b>comment</b>: This applies only when it is necessary to mark up the number of Coadjutor Brothers in a table such as a statistical table
</p>
<p>
<b>sub property of</b>: <a href="http://www.sdb.org/vocabulary/salesian#statusClassification">http://www.sdb.org/vocabulary/salesian#statusClassification</a>
</p>
</div>
</div>
<div id="outline-container-8.2.19" class="outline-4"><a name="professed"></a>
<h4 id="sec-8.2.19">8.2.19 <span class="target">professed</span> </h4>
<div id="text-8.2.19">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#professed">http://www.sdb.org/vocabulary/salesian#professed</a>
</p>
<p>
<b>label</b>: professed
</p>
<p>
<b>comment</b>: Confreres who have been admitted to vows
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#EvangelicalCounsel">http://www.sdb.org/vocabulary/ConsecratedLife#EvangelicalCounsel</a>
</p>
<p>
<b>range</b>: All living Salesian confreres
</p>
</div>
</div>
<div id="outline-container-8.2.20" class="outline-4"><a name="temporaryVows"></a>
<h4 id="sec-8.2.20">8.2.20 <span class="target">temporaryVows</span> </h4>
<div id="text-8.2.20">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#temporaryVows">http://www.sdb.org/vocabulary/salesian#temporaryVows</a>
</p>
<p>
<b>label</b>: temporary vows
</p>
<p>
<b>comment</b>: Confreres who have professed temporary vows
</p>
<p>
<b>sub property of</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#professed">http://www.sdb.org/vocabulary/ConsecratedLife#professed</a>
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#EvangelicalCounsel">http://www.sdb.org/vocabulary/ConsecratedLife#EvangelicalCounsel</a>
</p>
<p>
<b>range</b>: All living temporary professed Salesian confreres
</p>
</div>
</div>
<div id="outline-container-8.2.21" class="outline-4"><a name="perpetualVows"></a>
<h4 id="sec-8.2.21">8.2.21 <span class="target">perpetualVows</span> </h4>
<div id="text-8.2.21">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#perpetualVows">http://www.sdb.org/vocabulary/salesian#perpetualVows</a>
</p>
<p>
<b>label</b>: perpetual vows
</p>
<p>
<b>comment</b>: Confreres who have professed perpetual vows
</p>
<p>
<b>sub property of</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#professed">http://www.sdb.org/vocabulary/ConsecratedLife#professed</a>
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#EvangelicalCounsel">http://www.sdb.org/vocabulary/ConsecratedLife#EvangelicalCounsel</a>
</p>
<p>
<b>range</b>: All living perpetually professed Salesian confreres
</p>
</div>
</div>
<div id="outline-container-8.2.22" class="outline-4"><a name="formativePhase"></a>
<h4 id="sec-8.2.22">8.2.22 <span class="target">formativePhase</span> </h4>
<div id="text-8.2.22">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#formativePhase">http://www.sdb.org/vocabulary/salesian#formativePhase</a>
</p>
<p>
<b>label</b>: formative phase
</p>
<p>
<b>comment</b>: A defined phase in the formation process, which may receive various designations, but the most common would be: 'initial' 'ongoing', 'specific'. The key aspect here is that it is a process and a relationship, hence a property of Formation. It could also involve a pre-phase such as aspirantate or prenovitiate, inasmuch as the process of accompaniment is involved
</p>
<p>
<b>URI</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#deceased">http://www.sdb.org/vocabulary/ConsecratedLife#deceased</a>
</p>
<p>
<b>label</b>: deceased
</p>
<p>
<b>comment</b>: Confreres listed in the Salesian Necrology. Or to indicate those who are deceased (e.g.number in a year) in a statistical table
</p>
<p>
<b>sub property of</b>: <a href="http://www.sdb.org/vocabulary/ConsecratedLife#professed">http://www.sdb.org/vocabulary/ConsecratedLife#professed</a>
</p>
</div>
</div>
<div id="outline-container-8.2.23" class="outline-4"><a name="separated"></a>
<h4 id="sec-8.2.23">8.2.23 <span class="target">separated</span> </h4>
<div id="text-8.2.23">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#separated">http://www.sdb.org/vocabulary/salesian#separated</a>
</p>
<p>
<b>label</b>: separated
</p>
<p>
<b>comment</b>: Confreres who have left the Congregation (other than by 'deceased'!)
</p>
</div>
</div>
<div id="outline-container-8.2.24" class="outline-4">
<h4 id="sec-8.2.24">8.2.24 <span class="target">linkedTo</span> </h4>
<div id="text-8.2.24">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#linkedTo">http://www.sdb.org/vocabulary/salesian#linkedTo</a>
</p>
<p>
<b>label</b>: linked to
</p>
<p>
<b>comment</b>: To establish the fact that a partly or fully external organization (e.g. an NGO) is closely linked to the Salesian Mission
</p>
<p>
<b>domain</b>: <a href="http://www.w3.org/ns/org#FormalOrganization">http://www.w3.org/ns/org#FormalOrganization</a>
</p>
<p>
<b>range</b>: NGOs, Volunteer organizations, Funding organizations or Foundations are amongst the kinds of terms one might find here
</p>
</div>
</div>
<div id="outline-container-8.2.25" class="outline-4"><a name="hasMembership"></a>
<h4 id="sec-8.2.25">8.2.25 <span class="target">hasMembership</span> </h4>
<div id="text-8.2.25">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#hasMembership">http://www.sdb.org/vocabulary/salesian#hasMembership</a>
</p>
<p>
<b>label</b>: has membership
</p>
<p>
<b>comment</b>: Indicates that a group is formally a member of the Salesian Family
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#SalesianFamily">http://www.sdb.org/vocabulary/salesian#SalesianFamily</a>
</p>
<p>
<b>range</b>: the 28 groups listed in Description, <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.SalesianFamily">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.SalesianFamily</a>
</p>
</div>
</div>
<div id="outline-container-8.2.26" class="outline-4"><a name="isholy"></a>
<h4 id="sec-8.2.26">8.2.26 <span class="target">isholy</span> </h4>
<div id="text-8.2.26">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#isHoly">http://www.sdb.org/vocabulary/salesian#isHoly</a>
</p>
<p>
<b>label</b>: is holy
</p>
<p>
<b>comment</b>: Indicates that an individual member of the Salesian Family, or closely connected with the charism, is under consideration for introduction of a Saintly Cause
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#Holiness">http://www.sdb.org/vocabulary/salesian#Holiness</a>
</p>
<p>
<b>range</b>: covers any reference to preliminary stages leading to a formal Cause
</p>
<hr/>
<p>
For description of events it is suggested to use an Event ontology such as <a href="http://linkedevents.org/ontology/">http://linkedevents.org/ontology/</a>
</p>
<p>
Prefix: lode:
</p>
<p>
Namespace: <a href="http://linkedevents.org/ontology/">http://linkedevents.org/ontology/</a>
</p>
</div>
</div>
<div id="outline-container-8.2.27" class="outline-4"><a name="isSalesian"></a>
<h4 id="sec-8.2.27">8.2.27 <span class="target">isSalesian</span> </h4>
<div id="text-8.2.27">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#isSalesian">http://www.sdb.org/vocabulary/salesian#isSalesian</a>
</p>
<p>
<b>label</b>: is Salesian
</p>
<p>
<b>comment</b>: Property of Person. Indicates that an individual is a Salesian as distinct from, say, an employee.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#Person">http://www.sdb.org/vocabulary/salesian#Person</a>
</p>
<p>
<b>range</b>: may be applied to any Person who is a professed member of the Salesian Congregation
</p></div>
</div>
<div id="outline-container-8.2.28" class="outline-4"><a name="isEmployee"></a>
<h4 id="sec-8.2.28">8.2.28 <span class="target">isEmployee</span> </h4>
<div id="text-8.2.28">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#isEmployee">http://www.sdb.org/vocabulary/salesian#isEmployee</a>
</p>
<p>
<b>label</b>: is employee
</p>
<p>
<b>comment</b>: Property of Person. Indicates that an individual is an employee, as distinct from a Salesian.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#Person">http://www.sdb.org/vocabulary/salesian#Person</a>
</p>
<p>
<b>range</b>: may be applied to any Person who is an employee
</p></div>
</div>
<div id="outline-container-8.2.29" class="outline-4"><a name="addressCountry"></a>
<h4 id="sec-8.2.29">8.2.29 <span class="target">addressCountry</span> </h4>
<div id="text-8.2.29">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#addressCountry">http://www.sdb.org/vocabulary/salesian#addressCountry</a>
</p>
<p>
<b>label</b>: address country
</p>
<p>
<b>comment</b>: The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#PostalAddress">http://www.sdb.org/vocabulary/salesian#PostalAddress</a>
</p>
<p>
<b>range</b>: suggest this be kept only for address details, as disinct from, say 'inCountry' to indicate country of belonging, countries in a region etc.
</p></div>
</div>
<div id="outline-container-8.2.30" class="outline-4"><a name="addressLocality"></a>
<h4 id="sec-8.2.30">8.2.30 <span class="target">addressLocality</span> </h4>
<div id="text-8.2.30">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#addressLocality">http://www.sdb.org/vocabulary/salesian#addressLocality</a>
</p>
<p>
<b>label</b>: address locality
</p>
<p>
<b>comment</b>: The locality. For example, Mountain View, Roma-Bravetta…
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#PostalAddress">http://www.sdb.org/vocabulary/salesian#PostalAddress</a>
</p>
<p>
<b>range</b>: for use in address details.
</p></div>
</div>
<div id="outline-container-8.2.31" class="outline-4"><a name="addressRegion"></a>
<h4 id="sec-8.2.31">8.2.31 <span class="target">addressRegion</span> </h4>
<div id="text-8.2.31">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#addressRegion">http://www.sdb.org/vocabulary/salesian#addressRegion</a>
</p>
<p>
<b>label</b>: address region
</p>
<p>
<b>comment</b>: The region. For example, CA, Lazio,..
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#PostalAddress">http://www.sdb.org/vocabulary/salesian#PostalAddress</a>
</p>
<p>
<b>range</b>: for use in address details
</p></div>
</div>
<div id="outline-container-8.2.32" class="outline-4"><a name="postOfficeBoxNumber"></a>
<h4 id="sec-8.2.32">8.2.32 <span class="target">postOfficeBoxNumber</span> </h4>
<div id="text-8.2.32">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#postOfficeBoxNumber">http://www.sdb.org/vocabulary/salesian#postOfficeBoxNumber</a>
</p>
<p>
<b>label</b>: post office box number
</p>
<p>
<b>comment</b>: The post offce box number for PO box addresses.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#PostalAddress">http://www.sdb.org/vocabulary/salesian#PostalAddress</a>
</p>
<p>
<b>range</b>: for use in address details.
</p></div>
</div>
<div id="outline-container-8.2.33" class="outline-4"><a name="postalCode"></a>
<h4 id="sec-8.2.33">8.2.33 <span class="target">postalCode</span> </h4>
<div id="text-8.2.33">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#postalCode">http://www.sdb.org/vocabulary/salesian#postalCode</a>
</p>
<p>
<b>label</b>: postal code
</p>
<p>
<b>comment</b>: The postal code. For example, 94043.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#PostalAddress">http://www.sdb.org/vocabulary/salesian#PostalAddress</a>
</p>
<p>
<b>range</b>: for use in address details
</p></div>
</div>
<div id="outline-container-8.2.34" class="outline-4"><a name="streetAddress"></a>
<h4 id="sec-8.2.34">8.2.34 <span class="target">streetAddress</span> </h4>
<div id="text-8.2.34">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#streetAddress">http://www.sdb.org/vocabulary/salesian#streetAddress</a>
</p>
<p>
<b>label</b>: street address
</p>
<p>
<b>comment</b>: The street address. For example, 1111 Via della Pisana.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#PostalAddress">http://www.sdb.org/vocabulary/salesian#PostalAddress</a>
</p>
<p>
<b>range</b>: for use in address details.
</p></div>
</div>
<div id="outline-container-8.2.35" class="outline-4"><a name="contactType"></a>
<h4 id="sec-8.2.35">8.2.35 <span class="target">contactType</span> </h4>
<div id="text-8.2.35">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#contactType">http://www.sdb.org/vocabulary/salesian#contactType</a>
</p>
<p>
<b>label</b>: contact type
</p>
<p>
<b>comment</b>: A person or organization can have different contact points, for different purposes. This property is used to specify the kind of contact point.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#ContactPoint">http://www.sdb.org/vocabulary/salesian#ContactPoint</a>
</p>
<p>
<b>range</b>: for use in contact details.
</p></div>
</div>
<div id="outline-container-8.2.36" class="outline-4"><a name="email"></a>
<h4 id="sec-8.2.36">8.2.36 <span class="target">email</span> </h4>
<div id="text-8.2.36">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#email">http://www.sdb.org/vocabulary/salesian#email</a>
</p>
<p>
<b>label</b>: email
</p>
<p>
<b>comment</b>: Email address.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#ContactPoint">http://www.sdb.org/vocabulary/salesian#ContactPoint</a>
</p>
<p>
<b>range</b>: for use in contact details.
</p></div>
</div>
<div id="outline-container-8.2.37" class="outline-4"><a name="faxNumber"></a>
<h4 id="sec-8.2.37">8.2.37 <span class="target">faxNumber</span> </h4>
<div id="text-8.2.37">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#faxNumber">http://www.sdb.org/vocabulary/salesian#faxNumber</a>
</p>
<p>
<b>label</b>: fax number
</p>
<p>
<b>comment</b>: Fax number.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#ContactPoint">http://www.sdb.org/vocabulary/salesian#ContactPoint</a>
</p>
<p>
<b>range</b>: for use in contact details.
</p></div>
</div>
<div id="outline-container-8.2.38" class="outline-4"><a name="telephone"></a>
<h4 id="sec-8.2.38">8.2.38 <span class="target">telephone</span> </h4>
<div id="text-8.2.38">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#telephone">http://www.sdb.org/vocabulary/salesian#telephone</a>
</p>
<p>
<b>label</b>: telephone
</p>
<p>
<b>comment</b>: Telephone number.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#ContactPoint">http://www.sdb.org/vocabulary/salesian#ContactPoint</a>
</p>
<p>
<b>range</b>: for use in contact details.
</p></div>
</div>
<div id="outline-container-8.2.39" class="outline-4"><a name="geo"></a>
<h4 id="sec-8.2.39">8.2.39 <span class="target">geo</span> </h4>
<div id="text-8.2.39">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#geo">http://www.sdb.org/vocabulary/salesian#geo</a>
</p>
<p>
<b>label</b>: geo
</p>
<p>
<b>comment</b>: The geo coordinates of the place.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#Place">http://www.sdb.org/vocabulary/salesian#Place</a>
</p>
<p>
<b>range</b>: any coordinates to locate a community or other place.
</p></div>
</div>
<div id="outline-container-8.2.40" class="outline-4"><a name="map"></a>
<h4 id="sec-8.2.40">8.2.40 <span class="target">map</span> </h4>
<div id="text-8.2.40">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#map">http://www.sdb.org/vocabulary/salesian#map</a>
</p>
<p>
<b>label</b>: map
</p>
<p>
<b>comment</b>: A URL to a map of the place.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#Place">http://www.sdb.org/vocabulary/salesian#Place</a>
</p>
<p>
<b>range</b>: any map to locate a community or other place
</p></div>
</div>
<div id="outline-container-8.2.41" class="outline-4"><a name="photo"></a>
<h4 id="sec-8.2.41">8.2.41 <span class="target">photo</span> </h4>
<div id="text-8.2.41">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#photo">http://www.sdb.org/vocabulary/salesian#photo</a>
</p>
<p>
<b>label</b>: photo
</p>
<p>
<b>comment</b>: Photograph of this place.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#Place">http://www.sdb.org/vocabulary/salesian#Place</a>
</p>
<p>
<b>range</b>: any photo of a place (not of a person)
</p></div>
</div>
<div id="outline-container-8.2.42" class="outline-4"><a name="elevation"></a>
<h4 id="sec-8.2.42">8.2.42 <span class="target">elevation</span> </h4>
<div id="text-8.2.42">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#elevation">http://www.sdb.org/vocabulary/salesian#elevation</a>
</p>
<p>
<b>label</b>: elevation
</p>
<p>
<b>comment</b>: The elevation of a location
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#Geocoordinates">http://www.sdb.org/vocabulary/salesian#Geocoordinates</a>
</p>
<p>
<b>range</b>: any elevation figure.
</p></div>
</div>
<div id="outline-container-8.2.43" class="outline-4"><a name="latitude"></a>
<h4 id="sec-8.2.43">8.2.43 <span class="target">latitude</span> </h4>
<div id="text-8.2.43">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#latitude">http://www.sdb.org/vocabulary/salesian#latitude</a>
</p>
<p>
<b>label</b>: latitude
</p>
<p>
<b>comment</b>: The latitude of a location. For example 37.42242.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#Geocoordinates">http://www.sdb.org/vocabulary/salesian#Geocoordinates</a>
</p>
<p>
<b>range</b>: for use in contact details.
</p></div>
</div>
<div id="outline-container-8.2.44" class="outline-4"><a name="longitude"></a>
<h4 id="sec-8.2.44">8.2.44 <span class="target">longitude</span> </h4>
<div id="text-8.2.44">
<p><b>URI</b>: <a href="http://www.sdb.org/vocabulary/salesian#longitude">http://www.sdb.org/vocabulary/salesian#longitude</a>
</p>
<p>
<b>label</b>: longitude
</p>
<p>
<b>comment</b>: The longitude of a location. For example -122.08585.
</p>
<p>
<b>domain</b>: <a href="http://www.sdb.org/vocabulary/salesian#ContactPoint">http://www.sdb.org/vocabulary/salesian#ContactPoint</a>
</p>
<p>
<b>range</b>: for use in contact details.
</p></div>
</div>
</div>
<div id="outline-container-8.3" class="outline-3">
<h3 id="sec-8.3">8.3 EVENT CLASS </h3>
<div id="text-8.3">
</div>
<div id="outline-container-8.3.1" class="outline-4"><a name="Event"></a>
<h4 id="sec-8.3.1">8.3.1 <span class="target">Event</span> </h4>
<div id="text-8.3.1">
<p><b>URI</b>: <a href="http://linkedevents.org/ontology/Event">http://linkedevents.org/ontology/Event</a>
</p>
<p>
<b>label</b>: Event
</p>
<p>
<b>comment</b>: "Something that happened," as might be reported in a news article or explained by a historian.
</p>
<p>
<b>Sub class of</b>: <a href="http://purl.org/NET/cidoc-crm/core#E2_Temporal_Entity">http://purl.org/NET/cidoc-crm/core#E2_Temporal_Entity</a> and dctype:Event
</p>
<p>
<b>Equivalent to</b>: event:Event and dul:Event
</p>
</div>
</div>
</div>
<div id="outline-container-8.4" class="outline-3">
<h3 id="sec-8.4">8.4 EVENT PROPERTIES </h3>
<div id="text-8.4">
<p>Note: references to dul prefix are to the DOLCE+DnS Ultralite ontology. It is a simplification of some parts of the DOLCE Lite-Plus library (cf. <a href="http://www.loa-cnr.it/ontologies/DLP397.owl">http://www.loa-cnr.it/ontologies/DLP397.owl</a>)
</p>
</div>
<div id="outline-container-8.4.1" class="outline-4"><a name="atPlace"></a>
<h4 id="sec-8.4.1">8.4.1 <span class="target">atPlace</span> </h4>
<div id="text-8.4.1">
<p><b>URI</b>: <a href="http://linkedevents.org/ontology/atPlace">http://linkedevents.org/ontology/atPlace</a>
</p>
<p>
<b>label</b>:at place
</p>
<p>
<b>comment</b>: a named or relatively specified place that is where an event happened.
</p>
<p>
<b>domain</b>: Event
</p>
<p>
<b>range</b>:dul:Place
</p>
<p>
<b>sub property of</b>:dul:hasLocation
</p>
</div>
</div>
<div id="outline-container-8.4.2" class="outline-4"><a name="atTime"></a>
<h4 id="sec-8.4.2">8.4.2 <span class="target">atTime</span> </h4>
<div id="text-8.4.2">
<p><b>URI</b>: <a href="http://linkedevents.org/ontology/atTime">http://linkedevents.org/ontology/atTime</a>
</p>
<p>
<b>label</b>:at time
</p>
<p>
<b>comment</b>: an abstract instant or interval of time that is when an event happened.
</p>
<p>
<b>domain</b>:Event
</p>
<p>
<b>range</b>:owltime:TemporalEntity
</p>
<p>
<b>sub property of</b>: <a href="http://purl.org/NET/cidoc-crm/core#P4_has_time-span">http://purl.org/NET/cidoc-crm/core#P4_has_time-span</a> and dul:isObservableAt
</p>
</div>
</div>
<div id="outline-container-8.4.3" class="outline-4"><a name="circa"></a>
<h4 id="sec-8.4.3">8.4.3 <span class="target">circa</span> </h4>
<div id="text-8.4.3">
<p><b>URI</b>: <a href="http://linkedevents.org/ontology/circa">http://linkedevents.org/ontology/circa</a>
</p>
<p>
<b>label</b>: circa
</p>
<p>
<b>comment</b>: an interval of time that can be precisely described using calendar dates and clock times.
</p>
<p>
<b>domain</b>: owltime:TemporalEntity
</p>
<p>
<b>range</b>: owltime:DateTimeInterval
</p>
</div>
</div>
<div id="outline-container-8.4.4" class="outline-4"><a name="illustrate"></a>
<h4 id="sec-8.4.4">8.4.4 <span class="target">illustrate</span> </h4>
<div id="text-8.4.4">
<p><b>URI</b>: <a href="http://linkedevents.org/ontology/illustrate">http://linkedevents.org/ontology/illustrate</a>
</p>
<p>
<b>label</b>: illustrate
</p>
<p>
<b>comment</b>: an event illustrated by some thing (typically a media object)
</p>
<p>
<b>domain</b>: owl:Thing
</p>
<p>
<b>range</b>: Event
</p>
</div>
</div>
<div id="outline-container-8.4.5" class="outline-4"><a name="inSpace"></a>
<h4 id="sec-8.4.5">8.4.5 <span class="target">inSpace</span> </h4>
<div id="text-8.4.5">
<p><b>URI</b>: <a href="http://linkedevents.org/ontology/inSpace">http://linkedevents.org/ontology/inSpace</a>
</p>
<p>
<b>label</b>: in space
</p>
<p>
<b>comment</b>: an abstract region of space (e.g. a geospatial point or region) that is where an event happened.
</p>
<p>
<b>domain</b>: Event
</p>
<p>
<b>range</b>: geo:SpatialThing
</p>
<p>
<b>sub property of</b>: dul:hasRegion
</p>
</div>
</div>
<div id="outline-container-8.4.6" class="outline-4"><a name="involved"></a>
<h4 id="sec-8.4.6">8.4.6 <span class="target">involved</span> </h4>
<div id="text-8.4.6">
<p><b>URI</b>: <a href="http://linkedevents.org/ontology/involved">http://linkedevents.org/ontology/involved</a>
</p>
<p>
<b>label</b>: involved
</p>
<p>
<b>comment</b> a (physical, social, or mental) object involved in an event.
</p>
<p>
<b>domain</b>: Event
</p>
<p>
<b>range</b>: dul:Object
</p>
</div>
</div>
<div id="outline-container-8.4.7" class="outline-4"><a name="involvedAgent"></a>
<h4 id="sec-8.4.7">8.4.7 <span class="target">involvedAgent</span> </h4>
<div id="text-8.4.7">
<p><b>URI</b>: <a href="http://linkedevents.org/ontology/involvedAgent">http://linkedevents.org/ontology/involvedAgent</a>
</p>
<p>
<b>label</b>: involved agent
</p>
<p>
<b>comment</b>: an agent involved in an event.
</p>
<p>
<b>domain</b>: Event
</p>
<p>
<b>range</b>: dul:Agent
</p>
<p>
<b>sub property of</b>: involved
</p></div>
</div>
</div>
</div>
<div id="postamble"><p class="author"> Author: jbfox
<a href="mailto:jbfox@sdb.org"><jbfox@sdb.org></a>
</p>
<p class="date"> Date: 2011-10-11 08:11:55 CEST</p>
<p>HTML generated by org-mode 6.21b in emacs 23</p>
</div></body>
</html>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian.
!!!''Definition:'' (if a precise one exists)
(1) Pertaining to the life and spirit of St Francis de Sales.
(2) In specific reference to followers of Don Bosco: "On the evening of January 26, 1854, we were gathered in Don Bosco's room. Present were Don Bosco, Rocchietti, Artiglia, Cagliero and Rua. Don Bosco suggested that, with the help of the Lord and St Francis de Sales, we should engage in the practical exercise of charity toward neighbour. This would be in view of making a promise of it - and later - if possible and appropriate - a vow to the Lord. From that evening on those who were committed, or would in the future commit themselves, to this exercise were called 'Salesians'."
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The use of the designation 'Salesian' at the early date of 1854 is disputed in a note by Fr Rua. It may have been politically unwise as 1854 was the year in which the Cavour-Rattazzi bill against religious corporations was introduced into Parliament. However, we have the hand-written memo written by Rua and quoted above in the 'definition'. It could have been indicated in the memo but not used ostensibly until such time as it became less difficult to apply the term.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
In some official documents translated into English we find 'salesian' with lowercase 's' especially in adjectival form.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesians of Don Bosco|SDB Salesiani di Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' extern Salesian.
!!!''Definition:'' (if a precise one exists)
"Any person, even one living in the world, in one's house, in the bosom of one's family, can belong to this society...He takes no vows, but shall try to practise those portions of the present rule that are compatible with his age and condition". (from the appendix, later suppressed, in Don Bosco's Constitutions 1860-73)
!!!''Synonyms:''
Salesian Cooperators, promoters, benefactors, co-workers, friends of Don Bosco
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco's original thinking and indeed his original intention was to have 'extern Salesians' who did not live in community, did not take binding vows. Rome did not accept this idea as part of the Constitutions. Fr Dominic Pestarino of Mornese is a clear example of such a person. Eventually these became the Salesian Cooperators.
!!!''Usage notes''
The use of the term 'extern' here is somewhat special. As a noun today it would refer to a professional placement (such as occurs with doctors in training), so the Salesian use (although now only of historical interest) is particular if considered as a noun. Perhaps it is best seen as an adjective, as in 'external Salesian'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
"In 1864 the Holy See issued a commendation of the Pious Salesian Society and appointed a Superior. The Society's approval included a section that concerned the externs, who were always called promtoers or benefactors and eventually Salesian Cooperators" (Cooperatori salesiani 1877, Don Bosco)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian|Salesiano]].//
!!!!''SL'' is ''[en ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SALVO Salesian Lay Volunteers.
!!!''Definition:'' (if a precise one exists)
Lay volunteer movement started by the FIS province in 2009 on the occasion of the 150th of the Congregation, launched with the assistance of Br. Carlo Bacalla (currently a missionary in Laos, THA).
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
SALVO relaunched in 2016 with a long-term plan of immersion programs in FIS province, sending the volunteers to EAO region provinces (so far Cambodia, Myanmar)
and in the future also aiming to spread to other parts of the Congregation.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Cagliero Project]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian holiness.
!!!''Definition:'' (if a precise one exists)
(1) In the first instance, a reference to the spirituality of St Francis de Sales. Francis was ahead of his time: Vatican II spoke of the “universal call to holiness,” emphasizing that becoming a saint was everybody’s business, not just the professional job of priests and religious. But St. Francis de Sales was preaching the universal call to holiness (which is actually grounded in Leviticus 20:26 and Matthew 5:48) back in the Counter-Reformation of the 17th century.
(2) in the second instance, a reference to Salesian spirituality as expressed through the tradition of the Salesians of Don Bosco.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Salesian holiness in terms of the second 'definition' above stands out through the very many figures of holiness officially recongised by the Church in Saints, Blesseds, Venerables and Servants of God.
In an article in L'Osservatore Romano
Weekly Edition in English
12 January 2005, page 8, entitled
THE SALESIAN MONTH OF JANUARY,
Cardinal Angelo Amato SDB wrote a description of Salesian holiness (one could also refer to much later documentation, e.g. commentaries on Pope Francis' Apostolic Exhortation //Gaudete et Exsultate// (Rejoice and be glad), on the call to holiness in today's world, 19 March 2018, but the following article is valuable in its own right:
The month of January is particularly marked by Salesian holiness, as if to indicate the spiritual tone that should colour the flow of days and deeds in the New Year. This Salesian holiness shines out in some of the most important Salesian figures:
''Blessed Luigi Variara'' (15 January), an example of a humble, brave Salesian missionary who was determined to give a genuinely Salesian approach to nursing the most marginalized sick people;
''Blessed Laura Vicuña'' (22 January), a shining example of Salesian education who rigorously defended her dignity as a 12-year-old girl, as an offering for the conversion of those dear to her;
''St Francis de Sales'' (24 January), the Patron Saint of Salesians who inspired Salesian virtues such as the gentleness and docility of Jesus, the Good Shepherd;
''St John Bosco'' (31 January), our founder, teacher and father, and above all, our unexcelled model of holiness.
Like a complex prism with ever new facets and aspects, the year gradually unfolds its days and months, enriching the gallery of Salesian holiness with its most disparate interpretations.
The liturgy for the feast of Don Bosco calls him "teacher and father" to the young (Entrance Antiphon), and rightly so, for Don Bosco was a teacher, catechist, writer and founder of religious congregations dedicated to the education of youth.
Certain aspects of Don Bosco's spiritual pedagogy that are particularly appropriate today have been providentially treated in the recent Magisterium of the Holy Father, John Paul II. We refer in particular to the Apostolic Letter //Rosarium Virginis Mariae//, the Encyclical //Ecclesia de Eucharistia//, and the Post-Synodal Apostolic Exhortations //Ecclesia in Europa// and //Pastores Gregis//. In them we discover the four pillars that sustained Don Bosco in his pedagogy as a priest and Christian educator: devotion to Mary and to the Eucharist, the anchorage or pillar to which we should moor the ship of our existence; the virtue of hope that gives us joie de vivre; ready obedience to and communion with the Pastors of the Church.
''First pillar: devotion to Mary Help of Christians''
For Don Bosco, the Immaculate Virgin, Mary Help of Christians, was the ever-present Mother who helps her children daily, going to their rescue and leading them to Jesus. "Be devoted to Mary Help of Christians", he would habitually say, "and you will see what miracles are!".
For Don Bosco, Marian devotion had an intrinsically ecclesial dimension since he saw Mary as the powerful Helper who defends the Church and the Pope from every kind of danger. This is why in the Salesian tradition the daily recitation of the Rosary is not only an element of Marian devotion, but above all the contemplation of Jesus in the mysteries of his saving Incarnation.
''Second pillar: devotion to Jesus in the Eucharist''
The second pillar of Don Bosco's spirituality was devotion to Jesus in the
Eucharist, which he saw as the heart of every Salesian house. He used to remind young people: "If you want many graces, pay many visits to Jesus in the Sacrament; if you want few graces, pay him few".
Don Bosco was a "vir eucharisticus", that is, a saint formed through and through by the Eucharist. He was so passionate about the Eucharist that he communicated his passion to the young people he carefully prepared for communion with the Lord through the sacrament of Reconciliation. For Don Bosco, Confession and the Eucharist were the two sacraments that inculcated in young people the Christian virtues and holiness.
On this topic he wrote in 1877:
"Frequent Confession, frequent Communion and daily Mass are the pillars that must support an educational building that we desire to protect from threats and scourges. Never force youngsters to receive the holy sacraments, but only encourage them and make it easy for them to do so" (John Bosco, Il sistema preventivo nella educazione della gioventù [1877], n. 4).
The 15-year-old St Dominic Savio is a shining example of this sacramental pedagogy which strengthened his virtuous habits and his union with Jesus, witnessed by his Eucharistic ecstasies during Holy Communion.
''Third pillar: educational system based on joy, hope''
The third pillar of Don Bosco's spirituality was his educational system of joy and hope. Dominic Savio, who once said to Don Bosco: "I am the fabric, you are the tailor; make me into a beautiful suit for the Lord!", had fully grasped this when he suggested to his young companions: "Let's make holiness consist in being very cheerful!".
Salesian holiness is the fruit of a pedagogy of joy based on Christian hope in the eternal joy of paradise. Hope, which the Holy Father has insistently asked the European Churches to recover, was for Don Bosco the virtue that spurred him to embark on the most adventurous undertakings, such as the construction of the Church of Our Lady Help of Christians in Turin and of the Basilica of the Sacred Heart in Rome, and the foundation of two religious congregations with barely a penny in his pocket, overcoming unspeakable trials. He placed full trust in the Lord's provident presence in the history of the Church and in his own life.
He often used to say that the saints, while taking the final judgment seriously, lived in supreme joy because they trusted in the goodness of a Father who has infinite good things in store for his faithful servants.
If Francis of Assisi made nature holy, Don Bosco made joy holy, remembering' what Philip Neri had said to his young followers: "Run, jump, amuse yourselves as much as you like, but for pity's sake, don't sin!".
Like hope, which is a disposition given by God, joy too was not so much a methodological expedient but rather a form of life, an evangelical constant that gives rise to happiness and optimism. He felt that there was an affinity and harmony between serene young people and Christian life — a mutual appeal:
"The young person who feels he is in a state of grace with God naturally experiences joy in the certainty that he possesses a good that is completely within his reach, and he expresses this state of pleasure in cheerfulness" (John Bosco, //Vita del Giovanetto Savio Domenico//, in //Opere Edite//, XI, p. 236).
For him, //Servite Domino in laetitia// was the 11th commandment.
''Fourth pillar: devotion to Church and Vicar of Christ''
Don Bosco's fourth and last pillar is his devotion to the Church, to her Pastors and especially to the Holy Father. His love for the Pope was extraordinary and is an integral part of the Salesian formation and apostolate.
//Vivere in Ecclesia, sentire cum Ecclesia et agere pro Ecclesia// vividly captures the spirituality of Don Bosco.
With regard to the //sentire cum Ecclesia// that Don Bosco lived with a special reference to devotion to the Supreme Pontiff and his Magisterium, his second successor, Don Paolo Albera (19101912), wrote:
"Let us remember that in following in the footsteps of the saints, and especially in those of St Francis de Sales, Don Bosco was not content with a submission of the intellect restricted to ex cathedra definitions, but wanted sincere submission to any teaching of the Pope imparted in any form. Nor did he merely follow his orders and have them followed, but regarded as law and as a gentle command every announcement, every piece of advice, every desire of the Vicar of Jesus Christ, and he wanted his sons to do likewise" (P. Albera, //Lettere circolari ai salesiani//, SEI, Turin, 1922, p. 102).
"Knowing, loving and defending the Pope" was the gift of 1949, written by Don Pietro Ricaldone (1932-1951), the fourth successor of Don Bosco.
Francis Desramaut, a French historian, synthesized this Salesian ecclesial dimension, a living legacy of Don Bosco, in the following way:
"The Salesian mingles unostentatiously with Christians who can speak lovingly of the Church, 'judging her fondly, almost as though she were a mother'. They are aware that they have received the life of the Holy Spirit in the Church and through the Church. They may well know her limitations, her wrinkles and even her scandals, but attach little importance to them. Instead, they duly evaluate the advantages of her presence for each person and for humanity: the beneficial energies she spreads, the experience of God expressed by the holiness she offers as an example, the wisdom that emanates from the Word of God, the love that unites and inspires solidarity beyond the boundaries of nations and continents, the sense of life she offers, the values she defends and the prospects of eternal life that she unfolds. The Salesian family loves and admires the Church of Jesus Christ" (Francis Desra
maut, //Spiritualità salesiana//, LAS, Rome, 2001, p. 151).
Preventive system: based on reason, religion, tender love
With these four spiritual indicators, Salesian education offers to society and to the Church good Christians as well as honest citizens.
The climate in which this educational project is put into practice is the so-called "preventive system", which attempts to prevent rather than to repress, and is based on the famous triad: reason, religion, affection.
These three words show that education is a task founded on sound reason, on the grace of Baptism, and above all, on the good, transparent heart of the educator.
May Don Bosco help us to preserve his precious heritage and to promote it with creativity in the cultural context of our day.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[sensus ecclesiae]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Seminarian S.
!!!''Definition:'' (if a precise one exists)
This term is to be found in the Year Book in reference to the Salesian student at a seminary (philosophy, theology).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Year Book|annuario]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' scientific (general).
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Per estens., di attività che si serva dei mezzi tecnici delle varie scienze o che operi comunque con procedure basate su principî scientifici//. By extension, activities that apply the technical approaches or various sceinces or procedures based on scientific principles.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
ALERT! The English term 'scientific' is somewhat more restricetd in its application. As seen from the definition above (Treccani), the Italian //scientifico// may be applied to a general range of well-prepared items or discussions, not only science or scientific in nature. //Congressi scientifici// in the 19th century often dealt with politics rather than strictly with science. Some care needed in translation of this term., then, and in many instances it may not even need to be translated.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' scrutiny.
!!!''Definition:'' (if a precise one exists)
(1) close examination of a voting procedure (e.g. cf C. 153 and the reference to voting for a Rector Major at the General Chapter)
(2) juridical requirement (Canon Law) for ordination, regarding qualities required. Cf Can. 1051
(3) a more general process of evaluation or assessment of a candidate in initial formation
(4) a community process of examen and evaluation (as in //scrutinium paupertatis//, or //scrutinium castitatis//, or //scrutinium orationis//).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
While the sense of evaluation or assessment certainly exists, in the case of 2nd, 3rd and 4th meanings indicated above, at least in the case of initial formation it would be good not to lose sight of the liturgical and formative sense of the RCIA scrutinium, which is for the elect just prior to Baptism - in other words the individual is already chosen and accepted, and the focus is on Christ and forgiveness of sin.
There is no specific mention o f//scrutinium castitatis// 'scrutiny on chastity', in the C&R. It is mentioned in the index to the Rectors Manual 1982 but not in the paragraph it refers to - at least not in the precise words. In the planning outline of the RM and Council 2002-8 under the heading of 'primacy of spiritual life' there is reference to each province establishing periodic scrutinies on each of the evangelical counsels.
There is no specific mention of //scrutinium orationis//, 'scrutiny on prayer', in the C&R. It is mentioned in GC21 however, which required each community to make a periodical review of its prayer life (GC21 60b).
With regard to the //scrutinium povertatis//, or 'scrutiny on poverty', the term finds mention in a circular letter by Fr Ricceri on poverty, and was then followed up further by Fr Viganò. The concept, rather than the precise term, is contained in R. 65. In recent times, the planning project of the RM and Council 2002-8 specifically indicated that the //scrutinium paupertatis// should be carried out annually.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Evangelical Counsel]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SDB.
!!!''Definition:'' (if a precise one exists)
Acronym: Salesians of Don Bosco
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Until 1947 the members of the Salesian Society used SC in English-speaking countries (//Salesiana Congregatio//, 'Salesian Congregation') or SS in Italy and elsewhere (//Societas Salesiana//). The 16th General Chapter made the change to SDB with the following comment:
"The initials most in use, S.S. (//Societas Salesiana//) are already in use by another Congregation; the other, S.C. (Salesiana Congregatio) seems neither clear nor well-accepted. We will adopt S.D.B. (Salesiani Don Bosco), because this is the name we are universally known by, and it recalls the Saint who gives us our name, the Founder and Father. This is also the title by which we are officially recognised in the Annuario Pontificio. (ACS 143, Acts of the 16th General Chapter, p. 68).
!!!''Usage notes''
Clearly, SS had other problems too in the 20th century and beyond!
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The initials are usually used without full stops (periods), and often, in keeping with changing customs where lower case is preferred to upper case, we find them in lower case. There is no hard and fast rule for this.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesians of Don Bosco|SDB Salesiani di Don Bosco]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SDB Salesians of Don Bosco.
!!!''Definition:'' (if a precise one exists)
SDB Constitution 1: With a feeling of humble gratitude we believe that the Society of St Francis de Sales came into being not as a merely human venture but by the initiative of God. Through the motherly intervention of Mary, the Holy Spirit raised up St John Bosco to contribute to the salvation of youth ... to ensure the continuation of this mission, the Spirit inspired him to initiate various apostolic projects, first among them our Society.
C. 2: We, the Salesians of Don Bosco (SDB), form a community of the baptised. Submissive to the bidding of the Spirit we are resolved to carry out the Founder's apostolic plan in a specific form of religious life to be in the Church signs and bearers of the love of God for young people, especially those who are poor.
!!!''Synonyms:''
Society of St Francis de Sales (complete official title), Salesian Congregation, Pious Salesian Society (of historical value but deprecated as a term), Pious Society (also deprecated), Salesians of Don Bosco (the most common title in ordinary use today), Salesians (normally understood as SDBs, within the context of the Salesian Family of Don Bosco, but when 'Salesian' is understood as an adjective, it could apply more generally to the inspiration of St Francis de Sales as expressed by many religious and lay societies).
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
At Pope Pius IX's suggestion, Don Bosco, who up until then (1859), referred to the congregation of St Francis de Sales as involving both 'interns' and 'externs', adopted the term "Pious Society of St Francis de Sales" to describe the 'interns'. The Salesian Society in that understanding came into being on December 9/18, 1859.
We know that Don Bosco's original concept (in a Rule he had sketched out and presented to Pius IX in March 1858), was for a society or congregation which allowed its members to be "a religious for the Church and a free citizen in civil society". Even as late as 1880 he was still claiming that the Salesians were not a religious congregation but a charitable religious organisation to help abandoned young people and that the Latin word 'vow' might be understood as 'promise' in Italian! (Cf Lenti, Vol 3, //Don Bosco History and Spirit//, pg 289).
The founding document of the Salesian Society was drawn up on December 18, 1859. It is interesting to note that its wording speaks of "a society or congregation...".
Whatever Don Bosco's real intentions, thwarted in some ways by his being gradually forced into the ecclesiastical structure, this new 'society or congregation', which we should really recognise as 'The Salesian Society' was distinct from the 'Congregation of St Francis de Sales'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
"Our Congregation is approved...We are no longer private individuals but a Society, a visible body.." (BM IX, 26).
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[preventive system|sistema preventivo]], [[SDB]], [[preventive system|sistema preventivo]], [[Salesian Family|famiglia salesiana]] .//
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>sdbstats vocabulary</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="generator" content="Org-mode" />
<meta name="generated" content="2011-10-14 11:57:22 CEST" />
<meta name="author" content="jbfox" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
html { font-family: Times, serif; font-size: 12pt; }
.title { text-align: center; }
.todo { color: red; }
.done { color: green; }
.tag { background-color:lightblue; font-weight:normal }
.target { }
.timestamp { color: grey }
.timestamp-kwd { color: CadetBlue }
p.verse { margin-left: 3% }
pre {
border: 1pt solid #AEBDCC;
background-color: #F3F5F7;
padding: 5pt;
font-family: courier, monospace;
font-size: 90%;
overflow:auto;
}
table { border-collapse: collapse; }
td, th { vertical-align: top; }
dt { font-weight: bold; }
div.figure { padding: 0.5em; }
div.figure p { text-align: center; }
.linenr { font-size:smaller }
.code-highlighted {background-color:#ffff00;}
.org-info-js_info-navigation { border-style:none; }
#org-info-js_console-label { font-size:10px; font-weight:bold;
white-space:nowrap; }
.org-info-js_search-highlight {background-color:#ffff00; color:#000000;
font-weight:bold; }
/*]]>*/-->
</style>
<script type="text/javascript">
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*/-->
</script></head><body>
<h1 class="title">sdbstats vocabulary</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#sec-1">1 SDB STATISTICS VOCABULARY </a></li>
<li><a href="#sec-2">2 CLASSES </a>
<ul>
<li><a href="#sec-2.1">2.1 Dataset (set di dati) </a></li>
<li><a href="#sec-2.2">2.2 Person (Persona) </a>
<ul>
<li><a href="#sec-2.2.1">2.2.1 Personnel (Personale) </a></li>
<li><a href="#sec-2.2.2">2.2.2 Beneficiary (Destinatario) </a></li>
<li><a href="#sec-2.2.3">2.2.3 Confrere (Confratello) </a></li>
</ul>
</li>
<li><a href="#sec-2.3">2.3 Sector (Settore) </a>
<ul>
<li><a href="#sec-2.3.1">2.3.1 The 'classic' Salesian sectors (Settori 'classici' salesiani) </a></li>
</ul>
</li>
<li><a href="#sec-2.4">2.4 Work (Opera) </a></li>
<li><a href="#sec-2.5">2.5 Activity (Attività) </a></li>
<li><a href="#sec-2.6">2.6 House (Casa) </a></li>
<li><a href="#sec-2.7">2.7 Region (Regione) </a></li>
<li><a href="#sec-2.8">2.8 Circumscription (Circoscrizione) </a></li>
<li><a href="#sec-2.9">2.9 Code (Codice) </a></li>
<li><a href="#sec-2.10">2.10 Country (Nazione) </a></li>
<li><a href="#sec-2.11">2.11 Place (Luogo) </a></li>
<li><a href="#sec-2.12">2.12 Classification (Classification) </a></li>
<li><a href="#sec-2.13">2.13 Event (Evento) </a></li>
</ul>
</li>
<li><a href="#sec-3">3 PROPERTIES </a>
<ul>
<li><a href="#sec-3.1">3.1 Properties whose domain is the class of PERSON </a>
<ul>
<li><a href="#sec-3.1.1">3.1.1 novice (novizio) </a></li>
<li><a href="#sec-3.1.2">3.1.2 in formation (formando) </a></li>
<li><a href="#sec-3.1.3">3.1.3 newly professed (neoprofesso) </a></li>
<li><a href="#sec-3.1.4">3.1.4 permanent deacon (diacono permanente) </a></li>
<li><a href="#sec-3.1.5">3.1.5 brother (coadiutore) </a></li>
<li><a href="#sec-3.1.6">3.1.6 priest (sacerdote) </a></li>
<li><a href="#sec-3.1.7">3.1.7 prelate (vescovo) </a></li>
<li><a href="#sec-3.1.8">3.1.8 seminarian (seminarista) </a></li>
<li><a href="#sec-3.1.9">3.1.9 professed (professi) </a></li>
<li><a href="#sec-3.1.10">3.1.10 total confreres (totale confratelli) </a></li>
<li><a href="#sec-3.1.11">3.1.11 past pupil (exallievo) </a></li>
<li><a href="#sec-3.1.12">3.1.12 cooperator (cooperatore/trice) </a></li>
<li><a href="#sec-3.1.13">3.1.13 left (uscito) </a></li>
<li><a href="#sec-3.1.14">3.1.14 temporary professed (temporaneo) </a></li>
<li><a href="#sec-3.1.15">3.1.15 perpetually professed (perpetuo) </a></li>
<li><a href="#sec-3.1.16">3.1.16 deceased (defunto) </a></li>
<li><a href="#sec-3.1.17">3.1.17 expired (fino Voti) </a></li>
<li><a href="#sec-3.1.18">3.1.18 dispensed (dispensato) </a></li>
<li><a href="#sec-3.1.19">3.1.19 dispensed from celibacy (dispensato dal celibato) </a></li>
<li><a href="#sec-3.1.20">3.1.20 transferred to diocese (passato alla diocesi) </a></li>
<li><a href="#sec-3.1.21">3.1.21 dismissed (dimesso) </a></li>
<li><a href="#sec-3.1.22">3.1.22 SDB full time (sdb pieno tempo) </a></li>
<li><a href="#sec-3.1.23">3.1.23 SDB part time (sdb tempo parziale) </a></li>
<li><a href="#sec-3.1.24">3.1.24 beneficiary (destinatario) </a></li>
<li><a href="#sec-3.1.25">3.1.25 role classification </a></li>
<li><a href="#sec-3.1.26">3.1.26 status classification </a></li>
</ul>
</li>
<li><a href="#sec-3.2">3.2 Properties whose domain is the class of SECTOR </a>
<ul>
<li><a href="#sec-3.2.1">3.2.1 Vocation-oriented type </a></li>
<ul>
<li><a href="#3.2.1.1">3.2.1.1 vocational guidance centre (centro di orientamento vocazionale) </a></li>
<li><a href="#3.2.1.2">3.2.1.2 vocation community (comunità accoglienza) </a></li>
<li><a href="#3.2.1.3">3.2.1.3 aspirantate (aspirantato) </a></li>
<li><a href="#3.2.1.4">3.2.1.4 prenovitiate (prenoviziato) </a></li>
<li><a href="#3.2.1.5">3.2.1.5 novitiate (noviziato) </a></li>
<li><a href="#3.2.1.6">3.2.1.6 postnovitiate (Salesian) (postnoviziato salesiano) </a></li>
<li><a href="#3.2.1.7">3.2.1.7 postnovitiate (non-Salesian) (postnoviziato non salesiano) </a></li>
<li><a href="#3.2.1.8">3.2.1.8 postnovitiate for brothers (postnoviziato per coadiutori) </a></li>
<li><a href="#3.2.1.9">3.2.1.9 Salesian theologate (teologato salesiano) </a></li>
<li><a href="#3.2.1.10">3.2.1.10 Non-Salesian theologate (teologato non salesiano) </a></li>
<li><a href="#3.2.1.11">3.2.1.11 ongoing formation centre (centro formazione permanente) </a></li>
<li><a href="#3.2.1.12">3.2.1.12 brothers formation centre (centro formazione permenente coadiutori) </a></li>
<li><a href="#3.2.1.13">3.2.1.13 diocesan seminary (seminario diocesano) </a></li>
</ul>
<li><a href="#sec-3.2.2">3.2.2 Youth Ministry-oriented type </a></li>
<ul>
<li><a href="#3.2.2.1">3.2.2.1 festive oratory (oratorio festivo) </a></li>
<li><a href="#3.2.2.2">3.2.2.2 daily oratory (oratorio quotidiano) </a></li>
<li><a href="#3.2.2.3">3.2.2.3 youth centre (centro giovanile) </a></li>
<li><a href="#3.2.2.4">3.2.2.4 oratory youth centre (oratorio centro giovanile) </a></li>
<li><a href="#3.2.2.5">3.2.2.5 preschool (prescolare) </a></li>
<li><a href="#3.2.2.6">3.2.2.6 primary school (scuola primaria) </a></li>
<li><a href="#3.2.2.7">3.2.2.7 lower secondary (scuola secondaria primo grado) </a></li>
<li><a href="#3.2.2.8">3.2.2.8 upper secondary (scuola secondaria secondo grado) </a></li>
<li><a href="#3.2.2.9">3.2.2.9 basic literacy (scuola alfabetizzazione) </a></li>
<li><a href="#3.2.2.10">3.2.2.10 mission school (scuola parrocchiale missionaria) </a></li>
<li><a href="#3.2.2.11">3.2.2.11 professional school (scuola professionale) </a></li>
<li><a href="#3.2.2.12">3.2.2.12 agricultural school (scuola agricola) </a></li>
<li><a href="#3.2.2.13">3.2.2.13 technical school (scuola secondaria tecnica) </a></li>
<li><a href="#3.2.2.14">3.2.2.14 university level (istituto universitario) </a></li>
<li><a href="#3.2.2.15">3.2.2.15 adult education (corso qualificazione adulti) </a></li>
<li><a href="#3.2.2.16">3.2.2.16 boarding school (convitto) </a></li>
<li><a href="#3.2.2.17">3.2.2.17 hostel (pensionato) </a></li>
<li><a href="#3.2.2.18">3.2.2.18 youth at risk (opera giovani emarginati) </a></li>
<li><a href="#3.2.2.19">3.2.2.19 catechetical centre (centro catechistico) </a></li>
<li><a href="#3.2.2.20">3.2.2.20 leisure centre (centro animazione tempo libero) </a></li>
</ul>
<li><a href="#sec-3.2.3">3.2.3 Communications-oriented type </a></li>
<ul>
<li><a href="#3.2.3.1">3.2.3.1 province comms. centre (centro ispettoriale comunicazione sociale) </a></li>
<li><a href="#3.2.3.2">3.2.3.2 audio-visual centre (centro audiovisivo) </a></li>
<li><a href="#3.2.3.3">3.2.3.3 bookshop (libreria) </a></li>
<li><a href="#3.2.3.4">3.2.3.4 data centre (centro elaborazione dati) </a></li>
<li><a href="#3.2.3.5">3.2.3.5 radio (radio) </a></li>
<li><a href="#3.2.3.6">3.2.3.6 radio/tv (radio/tv) </a></li>
<li><a href="#3.2.3.7">3.2.3.7 print shop (tipografia) </a></li>
<li><a href="#3.2.3.8">3.2.3.8 publisher (editrice) </a></li>
</ul>
<li><a href="#sec-3.2.4">3.2.4 Mission-oriented type </a></li>
<ul>
<li><a href="#3.2.4.1">3.2.4.1 mission office (procura missionaria) </a></li>
<li><a href="#3.2.4.2">3.2.4.2 mission residence (residenza missionaria) </a></li>
<li><a href="#3.2.4.3">3.2.4.3 mission parish (parrocchia missionaria) </a></li>
</ul>
<li><a href="#sec-3.2.5">3.2.5 Salesian Family-oriented type </a></li>
<ul>
<li><a href="#3.2.5.1">3.2.5.1 cooperator centre (centro cooperatori) </a></li>
<li><a href="#3.2.5.2">3.2.5.2 past pupils group (unione exallievi) </a></li>
</ul>
<li><a href="#sec-3.2.6">3.2.6 Other type including province services (servizi ispettoriale, altro) </a></li>
<ul>
<li><a href="#3.2.6.1">3.2.6.1 personal parish (parrocchia ad personam) </a></li>
<li><a href="#3.2.6.2">3.2.6.2 parish (parrocchia) </a></li>
<li><a href="#3.2.6.3">3.2.6.3 shrine (santuario) </a></li>
<li><a href="#3.2.6.4">3.2.6.4 public church (chiesa publica) </a></li>
<li><a href="#3.2.6.5">3.2.6.5 special service (servizio speciale) </a></li>
<li><a href="#3.2.6.6">3.2.6.6 migrant welfare (assistenza emigrati) </a></li>
<li><a href="#3.2.6.7">3.2.6.7 leprosarium (lebbrosario) </a></li>
<li><a href="#3.2.6.8">3.2.6.8 clinic (dispensario) </a></li>
<li><a href="#3.2.6.9">3.2.6.9 social advancement (promozione sociale) </a></li>
<li><a href="#3.2.6.10">3.2.6.10 rest home (casa riposo o di cura) </a></li>
<li><a href="#3.2.6.11">3.2.6.11 spirituality centre (centro spiritualità) </a></li>
<li><a href="#3.2.6.12">3.2.6.12 youth ministry centre (centro pastorale giovanile) </a></li>
</ul>
<li><a href="#sec-3.2.7">3.2.7 Types </a></li>
<ul>
<li><a href="#3.2.7.1">3.2.7.1 formation type (formazione) </a></li>
<li><a href="#3.2.7.2">3.2.7.2 oratory-youth centre type (oratorio-centro giovanile) </a></li>
<li><a href="#3.2.7.3">3.2.7.3 school type (scuola) </a></li>
<li><a href="#3.2.7.4">3.2.7.4 scholastic institute type (istituto scolastico) </a></li>
<li><a href="#3.2.7.5">3.2.7.5 professional and agricultural school type (scuola professionale) </a></li>
<li><a href="#3.2.7.6">3.2.7.6 hostel type (convitto) </a></li>
<li><a href="#3.2.7.7">3.2.7.7 vocational guidance type (orientamento vocazionale) </a></li>
<li><a href="#3.2.7.8">3.2.7.8 parishes and missions type (parrocchia e missione) </a></li>
<li><a href="#3.2.7.9">3.2.7.9 social advancement type (promozione sociale) </a></li>
<li><a href="#3.2.7.10">3.2.7.10 social communication type (comunicazione sociale) </a></li>
<li><a href="#3.2.7.11">3.2.7.11 provincial services type (servizi ispettoriali) </a></li>
<li><a href="#3.2.7.12">3.2.7.12 group (SF) type (gruppo FS) </a></li>
</ul>
<li><a href="#sec-3.2.8">3.2.8 Total personnel (totale personale) </a></li>
<ul>
<li><a href="#3.2.8.1">3.2.8.1 has total SDB full-time (SDB a pieno tempo) </a></li>
<li><a href="#3.2.8.2">3.2.8.2 has total SDB part-time (SDB a tempo parziale) </a></li>
<li><a href="#3.2.8.3">3.2.8.3 has total Salesian Family member (famiglia salesiana) </a></li>
<li><a href="#3.2.8.4">3.2.8.4 has total other religious (religioso) </a></li>
<li><a href="#3.2.8.5">3.2.8.5 has total lay person (laico) </a></li>
</ul>
<li><a href="#sec-3.2.9">3.2.9 Total beneficiary (totale destinatari) </a></li>
<ul>
<li><a href="#3.2.9.1">3.2.9.1 has total beneficiary (destinatario) </a></li>
</ul>
</ul>
</li>
<li><a href="#sec-3.3">3.3 Properties whose domain is the class of SALESIAN FAMILY </a>
<ul>
<li><a href="#sec-3.3.1">3.3.1 cooperator centre (centro cooperatori) </a></li>
<li><a href="#sec-3.3.2">3.3.2 past pupils group (unione exallievi) </a></li>
</ul>
</li>
<li><a href="#sec-3.4">3.4 Properties whose domain is the class of HOUSE </a>
<ul>
<li><a href="#sec-3.4.1">3.4.1 canonically erected (eretta) </a></li>
<li><a href="#sec-3.4.2">3.4.2 not canonically erected (presenza non eretta) </a></li>
</ul>
</li>
<li><a href="#sec-3.5">3.5 Properties whose domain is the class of REGION </a>
<ul>
<li><a href="#sec-3.5.1">3.5.1 region classification (classificazione regioni) </a></li>
</ul>
</li>
<li><a href="#sec-3.6">3.6 Properties whose domain is the class of CIRCUMSCRIPTION </a>
<ul>
<li><a href="#sec-3.6.1">3.6.1 official name (titolo ufficiale) </a></li>
<li><a href="#sec-3.6.2">3.6.2 date founded (data della fondazione) </a></li>
<li><a href="#sec-3.6.3">3.6.3 date refounded (data della rifondazione) </a></li>
</ul>
</li>
<li><a href="#sec-3.7">3.7 Properties whose domain is the class of PLACE </a>
<ul>
<li><a href="#sec-3.7.1">3.7.1 continent </a></li>
<li><a href="#sec-3.7.2">3.7.2 nation </a></li>
<li><a href="#sec-3.7.3">3.7.3 province </a></li>
<li><a href="#sec-3.7.4">3.7.4 canonical community </a></li>
<li><a href="#sec-3.7.5">3.7.5 presence </a></li>
</ul></li>
</ul>
</li>
<li><a href="#sec-4">4 Display properties </a></li>
<li><a href="#sec-5">5 Reference Concepts </a></li>
</ul>
</div>
</div>
<div id="outline-container-1" class="outline-2">
<h2 id="sec-1">1 SDB STATISTICS VOCABULARY </h2>
<div id="text-1">
<p>A semantic vocabulary based on the six-yearly <i>Dati Statistici</i> and the annual <i>Annuario</i> data presentations of the Salesian Congregation
</p>
<p>
<b>Note 1</b>: By convention, vocabularies for the semantic web are
written in English, but the SKOS (Simple Knowledge Organization System)
labels make it easy to offer labels for other languages also. The <i>Dati Statistici</i> and <i>Annuario</i>
terms are, by convention, provided in Italian, hence for this
vocabulary the preferred or alternative label (skos:prefLabel,
skos:altLabel) is given in Italian and English. <i>Definitions</i> (skos:definition) and <i>Notes</i>
(skos:scopeNote) are also provided in both languages. Occasionally an
RDFS (Resource Description Framework Schema) label is also employed
(e.g. rdfs:seeAlso). In fact <i>Domain</i> and <i>Range</i> are actually rdfs:domain and rdfs:range. Reference to <i>foaf</i> is to the <i>Friend Of A Friend</i> vocabulary, <a href="http://xmlns.com/foaf/spec/">http://xmlns.com/foaf/spec/</a> . An OWL (Web Ontology Language) label (owl:sameAs) is also occasionally used.
</p>
<p>
<b>Nota 1</b>: I vocabolari del Web semantico sono, per convenzione,
scritti in inglese, però il sistema SKOS (Simple Knowledge Organization
System ossia Sistema semplice per organizzare la conoscenza) consente
di scrivere etichette in altre lingue. Le voci dei libri <i>Dati Statistici</i>, <i>Annuario</i> sono in italiano. Per questi motivi il vocabolario <i>sdbstats</i>
offre etichette (skos:prefLabel, skos altLabel, skos:definition,
skos:scopeNote) in tutti e due le lingue, inglese e italiano. A volte
si usa una etichetta RDFS (Resource Description Framework Schema, p.e.
rdfs:seeAlso). Infatti, il <i>Dominio</i> e <i>Campo</i> sono attualmente rdfs:domain e rdfs:range. <i>foaf</i> è il vocabolario <i>Friend Of A Friend</i>, <a href="http://xmlns.com/foaf/spec/">http://xmlns.com/foaf/spec/</a> . Si trova anche a volte la etichetta OWL (Web Ontology Language) owl:sameAs.
</p>
<p>
<b>Note 2</b>: Labelling conventions vary. For the URL 'local name' we
have chosen the CamelCase convention, i.e. using upper case as a
delimiter as seen in the namespace for consecrated life below. Instead
for labels, we have chosen natural language format (space delimiter)
but distinguished classes from properties by using an initial upper
case letter for class and lower case for properties.
</p>
<p>
<b>Nota 2</b>: Esistono diversità di formati per le etichette. Per
l'URL usiamo CamelCase, cioè a lettere maiuscole come si trova qui
sotto per <i>ConsecratedLife</i>. Per le etichette, invece, preferiamo
formati come nelle lingue naturale, distinguendo, però, una ‘classe’
che comincia con una lettera maiuscola, da una ‘proprietà’ che comincia
con la minuscola.
</p>
<p>
<b>Namespace</b>
The namespace for this vocabulary is <a href="http://www.sdb.org/vocabulary/sdbstats#">http://www.sdb.org/vocabulary/sdbstats#</a>
</p>
<p>
The suggested prefix abbreviation is <i>sdbds</i> (ds for <i>dati statistici</i>)
</p>
<p>
Il namespace per questo vocabolario è <a href="http://www.sdb.org/vocabulary/sdbstats#">http://www.sdb.org/vocabulary/sdbstats#</a>
</p>
<p>
il suo prefisso racommandato sarebbe <i>sdbds</i> (ds significa <i>dati statistici</i>)
</p>
<p>This vocabulary should also be seen as connected with other
vocabularies in the same namespace: the 'ConsecratedLife' vocabulary at
<a href="http://www.sdb.org/vocabulary/ConsecratedLife#">http://www.sdb.org/vocabulary/ConsecratedLife#</a> and the 'salesian' vocabulary at <a href="http://www.sdb.org/vocabulary/salesian#">http://www.sdb.org/vocabulary/salesian#</a>.
It is, in particular, an extension of the latter. One other vocabulary
linked to the above and to this is 'Salesian Termbase', <a href="http://www.sdb.org/pmwiki/pmwiki.php">http://www.sdb.org/pmwiki/pmwiki.php</a>
</p>
<p>
Questo vocabolario è legato a tre altri vocabolari nello stesso
'namespace', come indicato qui sopra: 'ConsecratedLife', e 'salesian',
pure a 'Salesian Termbase'.
</p>
</div>
</div>
<div id="outline-container-2" class="outline-2">
<h2 id="sec-2">2 CLASSES </h2>
<div id="text-2">
</div>
<div id="outline-container-2.1" class="outline-3">
<h3 id="sec-2.1">2.1 Dataset (set di dati) </h3>
<div id="text-2.1">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Dataset">http://www.sdb.org/vocabulary/sdbstats#Dataset</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Set di dati.
</p>
<p>
<i>Preferred label@en</i>: Data set.
</p>
<p>
<i>Definizione@it</i>: Dati codificati in una struttura definita.
</p>
<p>
<i>Definition@en</i>: Data codified in a determined strucuture.
</p>
<p>
<i>Nota@it</i>: potrebbe essere un elenco, spreadsheet (foglio elettronico), database.
</p>
<p>
<i>Note@en</i>: could be a list, spreadsheet, database.
</p>
<p>
<i>See Also</i>: <a href="http://purl.org/dc/dcmitype/Dataset">http://purl.org/dc/dcmitype/Dataset</a>
</p></div>
</div>
<div id="outline-container-2.2" class="outline-3">
<h3 id="sec-2.2">2.2 Person (Persona) </h3>
<div id="text-2.2">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Person">http://www.sdb.org/vocabulary/sdbstats#Person</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Persona.
</p>
<p>
<i>Preferred label@en</i>: Person.
</p>
<p>
<i>Definizione@it</i>: essere umano.
</p>
<p>
<i>Definition@en</i>: human being.
</p>
<p>
<i>Same As</i>: <a href="http://www.sdb.org/vocabulary/salesian#Person">http://www.sdb.org/vocabulary/salesian#Person</a>
</p>
</div>
<div id="outline-container-2.2.1" class="outline-4">
<h4 id="sec-2.2.1">2.2.1 Personnel (Personale) </h4>
<div id="text-2.2.1">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Personnel">http://www.sdb.org/vocabulary/sdbstats#Personnel</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Personale.
</p>
<p>
<i>Preferred label@en</i>: Personnel.
</p>
<p>
<i>Definizione@it</i>: Persone coinvolte nel gestire o animare un'opera o un'attività: possono essere salesiani, laici, religiosi o consacrati.
</p>
<p>
<i>Definition@en</i>: People who are involved in running a work or activity.
</p>
<p>
<i>Nota@it</i>: un confratello vivo. Sono conteggiati, nella statistica
generale dei confratelli delle singole ispettorie, anche quelli che si
trovano in posizione giuridica irregolare, ossia fuori comunità se non
sono concluse le pratiche per la loro uscita dalla Società.
</p>
<p>
<i>Note@en</i>: they may be Salesians, lay, other religious or consecrated.
</p>
<p>
<i>Sub Class of</i>: Person.
</p>
</div>
</div>
<div id="outline-container-2.2.2" class="outline-4">
<h4 id="sec-2.2.2">2.2.2 Beneficiary (Destinatario) </h4>
<div id="text-2.2.2">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Beneficiary">http://www.sdb.org/vocabulary/sdbstats#Beneficiary</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Destinatario.
</p>
<p>
<i>Preferred label@en</i>: Beneficiary.
</p>
<p>
<i>Alternative label@en</i>: Pupil.
</p>
<p>
<i>Alternative label@en</i>: Faithful.
</p>
<p>
<i>Definizione@it</i>: Soggetto, recipiente, ente che trarre beneficio da un'opera, un'attività o un servizio.
</p>
<p>
<i>Definition@en</i>: Someone who is a recipient, addressee of a work or activity or service, or can be said to benefit from it in some way.
</p>
<p>
<i>Sub Class of</i>: Person.
</p></div>
</div>
<div id="outline-container-2.2.3" class="outline-4">
<h4 id="sec-2.2.3">2.2.3 Confrere (Confratello) </h4>
<div id="text-2.2.3">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Confrere">http://www.sdb.org/vocabulary/sdbstats#Confrere</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Confratello.
</p>
<p>
<i>Preferred label@en</i>: Confrere.
</p>
<p>
<i>Definizione@it</i>: Salesiano di Don Bosco.
</p>
<p>
<i>Definition@en</i>: Salesian of Don Bosco.
</p>
<p>
<i>Nota@it</i>: un confratello vivo. Sono conteggiati, nella statistica
generale dei confratelli delle singole ispettorie, anche quelli che si
trovano in posizione giuridica irregolare, ossia fuori comunità se non
sono concluse le pratiche per la loro uscita dalla Società.
</p>
<p>
<i>Note@en</i>: a living confrere. In the general statistics confreres
from a province are counted even if technically irregular, meaning
living outside of community, but for whom the procedures for leaving
the Society have not been concluded.
</p>
<p>
<i>Sub Class of</i>: Person.
</p>
</div>
</div>
</div>
<div id="outline-container-2.3" class="outline-3">
<h3 id="sec-2.3">2.3 Sector (Settore) </h3>
<div id="text-2.3">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Sector">http://www.sdb.org/vocabulary/sdbstats#Sector</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Settore.
</p>
<p>
<i>Preferred label@en</i>: Sector.
</p>
<p>
<i>Definizione@it</i>: Una dimensione carismatica della mission
salesiana che si esprime mediante un'opera o un'attività in favore dei
giovani e al servizio della Chiesa.
</p>
<p>
<i>Definition@en</i>: A charismatic dimension of the Salesian mission
which results in a work or activity for the good of the young and at
the service of the Church.
</p>
<p>
<i>Nota@it</i>: I settori sono quelli elencati nelle Costituzioni della
Congrregazione (Pastorale Giovanile, Formazione, Comunicazione Sociale,
Missioni, Famiglia Salesiana, Economia), però a causa del libro Dati
Statistici che impiega questo termine in senso più ampio, può
abbracciare anche altri servizi alla Chiesa o attività salesiana che a
prima vista non sembrano corrispondere facilmente con una o altra
categoria appena elencata.
</p>
<p>
<i>Note@en</i>: The sectors would normally be the six indicated in the
Salesian Constitutions (Youth Ministry, Formation, Communication,
Missions, Salesian Family, Economy) but for the purposes of the Dati
Statistici we allow a certain flexibility to the term to include
services which might be rendered to a diocese, or other activities run
by the Congregation which at first sight are not so easy to fit into
one of the six categories just listed.
</p>
</div>
<div id="outline-container-2.3.1" class="outline-4">
<h4 id="sec-2.3.1">2.3.1 The 'classic' Salesian sectors (Settori 'classici' salesiani) </h4>
<div id="text-2.3.1">
<ul>
<li id="sec-2.3.1.1">Formation (Formazione) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Formation">http://www.sdb.org/vocabulary/sdbstats#Formation</a>
<p>
<i>Etichetta preferita@it</i>: Formazione.
</p>
<p>
<i>Preferred label@en</i>: Formation.
</p>
<p>
<i>Definizione@it</i>: un settore della missione salesiana. La
formazione salesiana parte sia dalla situazione della persona in
formazione che dal progetto, che è la missione che Don Bosco ci ha
consegnato.
</p>
<p>
<i>Definition@en</i>: a sector of the Salesian mission. Salesian
formation takes its starting points from both the individual human
being involved, and the project which is the Salesian mission as passed
on to us by Don Bosco.
</p>
<p>
<i>See Also</i>: <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Formation">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Formation</a>
</p>
<p>
<i>Sub Class of</i>: Sector.
</p></li>
<li id="sec-2.3.1.2">Youth Ministry (Pastorale Giovanile) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#YouthMinistry">http://www.sdb.org/vocabulary/sdbstats#YouthMinistry</a>
<p>
<i>Etichetta preferita@it</i>: Pastorale Giovanile.
</p>
<p>
<i>Preferred label@en</i>: Youth Ministry.
</p>
<p>
<i>Definizione@it</i>: un settore della missione salesiana sotto la
guida di un Consigliere. La PG è il quadro di riferimento fondamentale
per la pastorale a favore dei giovani e lo stile fondamentale di
animazione salesiana.
</p>
<p>
<i>Definition@en</i>: A sector of the Salesian mission under the
leadership of a Councillor. YM is the basic frame of reference for
Salesian ministry to the young, and a fundamental style of Salesian
animation.
</p>
<p>
<i>See Also</i>: <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.YouthMinistry">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.YouthMinistry</a>
</p>
<p>
<i>Sub Class of</i>: Sector.
</p></li>
<li id="sec-2.3.1.3">Social Communication (Comunicazione Sociale) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#SocialCommunication">http://www.sdb.org/vocabulary/sdbstats#SocialCommunication</a>
<p>
<i>Etichetta preferita@it</i>: Comunicazione Sociale.
</p>
<p>
<i>Preferred label@en</i>: Social Communication.
</p>
<p>
<i>Definizione@it</i>: un settore che rientra tre le priorità
apostoliche della missione salesiana. Attraverso la gestione di
processi e prodotti mira a creare e rafforzare gli ambiente salesiani
di comunicazione.
</p>
<p>
<i>Definition@en</i>: A sector which constitutes one of the apostolic
priorities of the Salesian mission (cf. C. 43). Social Communication is
the management of processes and products that aim to create and enhance
Salesian communication environments.
</p>
<p>
<i>See Also</i>: <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.SocialCommunication">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.SocialCommunication</a>
</p>
<p>
<i>Sub Class of</i>: Sector.
</p></li>
<li id="sec-2.3.1.4">Missions (Missioni) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Missions">http://www.sdb.org/vocabulary/sdbstats#Missions</a>
<p>
<i>Etichetta preferita@it</i>: Missioni.
</p>
<p>
<i>Preferred label@en</i>: Missions.
</p>
<p>
<i>Definizione@it</i>: un settore della missione salesiana. Ravvisiamo nel lavoro missionario un lineamento essenziale della nostra Congregazione.
</p>
<p>
<i>Definition@en</i>: a sector of the Salesian mission. People still
awaiting the gospel messageWe look upon missionary work as an essential
feature of our Congregation.
</p>
<p>
<i>Sub Class of</i>: Sector.
</p></li>
<li id="sec-2.3.1.5">Economy (Economia) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Economy">http://www.sdb.org/vocabulary/sdbstats#Economy</a>
<p>
<i>Etichetta preferita@it</i>: Economia.
</p>
<p>
<i>Preferred label@en</i>: Economy.
</p>
<p>
<i>Definizione@it</i>: un settore della missione salesiana. Si tratta dell'amministrazione economica.
</p>
<p>
<i>Definition@en</i>: a sector of the Salesian mission. Deals with matters of financial administration.
</p>
<p>
<i>Sub Class of</i>: Sector.
</p></li>
<li id="sec-2.3.1.6">Salesian Family (Famiglia Salesiana) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#SalesianFamily">http://www.sdb.org/vocabulary/sdbstats#SalesianFamily</a>
<p>
<i>Etichetta preferita@it</i>: Famiglia Salesiana.
</p>
<p>
<i>Preferred label@en</i>: Salesian Family.
</p>
<p>
<i>Definizione@it</i>: Don Bosco trae origine un vasto movimento di
persone che, in vari modi, operano per la salvezza della gioventù. Egli
stesso, oltre la Società di San Francesco di Sales, fondò l'istituto
delle Figlie di Maria Ausiliatrice e l'Associazione dei Cooperatori
Salesiani che, vivendo nel medesimo spirito e in comunione fra loro,
continuano la missione da lui iniziata, con vocazioni specifiche
diverse. Insieme a questi gruppi e ad altri nati in seguito formiamo la
Famiglia salesiana. Il termine "famiglia" come si usa qui descrive il
legame che intercorre tra i vari Gruppi, sia pure con intensità
diversa.
</p>
<p>
<i>Definition@en</i>: Don Bosco inspired the start of a vast movement
of persons who in different ways work for the salvation of the young.
He himself founded not only the Society of St Francis de Sales but also
the Institute of the Daughters of Mary Help of Christians and the
Association of Salesian Cooperators. These live in communion with each
other, share the same spirit and, with specifically distinct vocations,
continue the mission he began. Together with these groups and with
others born later we make up the Salesian Family. The term \"family\"
as used here describes the links that connect the various Groups, even
though with different intensity.
</p>
<p>
<i>Nota@it</i>: qui si tratta di una classe, ossia Famiglia Salesiana come concetto.
</p>
<p>
<i>Note@en</i>: we are dealing with Salesian Family here as a concept.
</p>
<p>
<i>See Also</i>: <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.SalesianFamily">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.SalesianFamily</a>
</p>
<p>
<i>Sub Class of</i>: Sector.
</p></li>
</ul>
</div>
</div>
</div>
<div id="outline-container-2.4" class="outline-3">
<h3 id="sec-2.4">2.4 Work (Opera) </h3>
<div id="text-2.4">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Work">http://www.sdb.org/vocabulary/sdbstats#Work</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Opera.
</p>
<p>
<i>Preferred label@en</i>: Work.
</p>
<p>
<i>Definizione@it</i>: ha un significato istituzionale e vuol dire un insieme di strutture, persone (salesiani ed altri).
</p>
<p>
<i>Definition@en</i>: has an institutional sense and means the complex of structures, personnel (Salesian and other).
</p>
<p>
<i>Nota@it</i>: un'opera salesiana tipica: oratorio, scuola ecc.
</p>
<p>
<i>Note@en</i>: a typical salesian Work: oratory, school etc.
</p>
<p>
<i>Sub Class of</i>: Sector.
</p>
</div>
</div>
<div id="outline-container-2.5" class="outline-3">
<h3 id="sec-2.5">2.5 Activity (Attività) </h3>
<div id="text-2.5">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Activity">http://www.sdb.org/vocabulary/sdbstats#Activity</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Attività.
</p>
<p>
<i>Preferred label@en</i>: Activity.
</p>
<p>
<i>Definizione@it</i>: un impegno che coinvolge la Congregazione in
termini di personale (Salesiani, altri) e corrisponde, grosso modo, ai
principali settori del carisma salesiano.
</p>
<p>
<i>Definition@en</i>: a commitment on the part of the Congregation,
involving personnel (Salesian and other) and which corresponds broadly
to the main sectors of the Salesian charism.
</p>
<p>
<i>Nota@it</i>: diciamo 'grosso modo'; può essere un'attività anche di
servizio speciale ad una diocesi o una attività tipicamente del carisma
salesiano nel settore di PG, CS, ecc. Questa classe si trova
soprattutto nel libro <i>Dati Statistici</i> per descrivere diverse
attività. Invece la classe 'Opera' è più strettamente collegata con i
sei settori: Formazione, Pastorale Giovanile, Missioni, Comunicazione
Sociale, Economia, Famiglia Salesiana.
</p>
<p>
<i>Note@en</i>: we say 'broadly, since it could be an activity of
special service to a diocese or some activity more typically Salesian,
involving a sector such as YM, SC etc. This class is found especially
in the <i>Dati Statistici</i> to describe various activities. ?Work',
instead, is a class more strictly tied to the classic six sectors:
Formation, Youth Ministry, Missions, Social COmmunication, Economy,
Salesian Family.
</p>
<p>
<i>Sub Class of</i>: Sector
</p></div>
</div>
<div id="outline-container-2.6" class="outline-3">
<h3 id="sec-2.6">2.6 House (Casa) </h3>
<div id="text-2.6">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#House">http://www.sdb.org/vocabulary/sdbstats#House</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Casa.
</p>
<p>
<i>Preferred label@en</i>: House.
</p>
<p>
<i>Definizione@it</i>: residenza della comunità salesiana, anche se sia solo una presenza (non eretta).
</p>
<p>
<i>Definition@en</i>: a Salesian community residence even if not canonically erected.
</p>
<p>
<i>Nota@it</i>: normalmente associato con una proprietà: eretta, non eretta.
</p>
<p>
<i>Note@en</i>: normally to be associated with a property: canonically erected or not canonically erected.
</p>
</div>
</div>
<div id="outline-container-2.7" class="outline-3">
<h3 id="sec-2.7">2.7 Region (Regione) </h3>
<div id="text-2.7">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Region">http://www.sdb.org/vocabulary/sdbstats#Region</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Regione.
</p>
<p>
<i>Preferred label@en</i>: Region.
</p>
<p>
<i>Definizione@it</i>: un gruppo di ispettorie (circoscrizioni, perché
potrebbe coinvolgere anche visitatorie, delegazioni o circoscrizioni
speciali) al cui è assegnato un Consigliere Generale, cioè un
Consigliere Regionale. Il capitolo generale decide come sarà costituita
una regione. (C. 154)
</p>
<p>
<i>Definition@en</i>: a group of provinces (circumscriptions, because
there may be vice provinces or delegations or special circumscriptions
involved) assigned to a General Councillor who is therefore known as a
Regional Councillor. The constitution of the groups of provinces is
made by the general chapter. (C. 154).
</p>
</div>
</div>
<div id="outline-container-2.8" class="outline-3">
<h3 id="sec-2.8">2.8 Circumscription (Circoscrizione) </h3>
<div id="text-2.8">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Circumscription">http://www.sdb.org/vocabulary/sdbstats#Circumscription</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Circoscrizione.
</p>
<p>
<i>Preferred label@en</i>: Circumscription.
</p>
<p>
<i>Definizione@it</i>: una estensione giuridicamente costitutita, che normalmente comprende più di una casa canonicamente eretta, e con il suo
proprio superiore nominato secondo le Costituzioni.
</p>
<p>
<i>Definition@en</i>: a legally constituted extension, normally
consisting of more than one legally constituted house under a duly
appointed superior. </p>
<p>
<i>Nota@it</i>: Nel discorso salesiano sarà una Ispettoria,
Visitatoria, Delegazione oppure Circoscrizione Speciale, tutti di
carattere territoriale.
</p>
<p>
<i>Note@en</i>: In Salesian discourse it will be a Province, Vice Province, Delegation or Special Circumscription – all territorial by nature.
</p>
</div>
</div>
<div id="outline-container-2.9" class="outline-3">
<h3 id="sec-2.9">2.9 Code (Codice) </h3>
<div id="text-2.9">
<p>This class is not mentioned as such in the current paper version of <i>Dati Statistici</i> but forms part of the overall logic of the vocabulary indicated here.
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Code">http://www.sdb.org/vocabulary/sdbstats#Code</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Codice.
</p>
<p>
<i>Preferred label@en</i>: Code.
</p>
<p>
<i>Definizione@it</i>: una regola per convertire un item di informazione (p.e. ispettoria, regione o gruppo) in altra forma o rappresentazione.
</p>
<p>
<i>Definition@en</i>: a rule for converting a piece of information (for example, a province or region or group) into another form or representation.
</p>
<p>
<i>Nota@it</i>: un esempio sarebbe le diverse sigle: ispettorie, o del Annuario.
</p>
<p>
<i>Note@en</i>: examples include province codes or codes found in the Annuario.
</p>
<p>
<i>See Also</i>: <a href="http://www.sdb.org/vocabulary/salesian#sec-8.1.4">http://www.sdb.org/vocabulary/salesian#sec-8.1.4</a>
</p>
</div>
</div>
<div id="outline-container-2.10" class="outline-3">
<h3 id="sec-2.10">2.10 Country (Nazione) </h3>
<div id="text-2.10">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Country">http://www.sdb.org/vocabulary/sdbstats#Country</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Nazione.
</p>
<p>
<i>Preferred label@en</i>: Country.
</p>
<p>
<i>Definizione@it</i>: nazione come definito a <a href="http://www.geonames.org/countries">http://www.geonames.org/countries</a>
</p>
<p>
<i>Definition@en</i>: a country as defined at <a href="http://www.geonames.org/countries">http://www.geonames.org/countries</a>
</p>
<p>
<i>See Also</i>: <a href="http://www.sdb.org/vocabulary/salesian#sec-8.1.15">http://www.sdb.org/vocabulary/salesian#sec-8.1.15</a>
</p>
</div>
</div>
<div id="outline-container-2.11" class="outline-3">
<h3 id="sec-2.11">2.11 Place (Luogo) </h3>
<div id="text-2.11">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Place">http://www.sdb.org/vocabulary/sdbstats#Place</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Luogo.
</p>
<p>
<i>Preferred label@en</i>: Place.
</p>
<p>
<i>Definizione@it</i>: Ente con una estensione alquanto fissata, fisica.
</p>
<p>
<i>Definition@en</i>: Entities that have a somewhat fixed, physical extension.
</p></div>
</div>
<div id="outline-container-2.12" class="outline-3">
<h3 id="sec-2.12">2.12 Classification (Classification) </h3>
<div id="text-2.12">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/salesian#Classification">http://www.sdb.org/vocabulary/salesian#Classification</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Classificazione.
</p>
<p>
<i>Preferred label@en</i>: Classification.
</p>
<p>
<i>Definizione@it</i>: uno schema di classificazione in uso nella Congregazione Salesiana o nella Famiglia Salesiana.
</p>
<p>
<i>Definition@en</i>: A classification scheme in use within the Salesian Congregation or Family.
</p>
</div>
</div>
<div id="outline-container-2.13" class="outline-3">
<h3 id="sec-2.13">2.13 Event (Evento) </h3>
<div id="text-2.13">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#Event">http://www.sdb.org/vocabulary/sdbstats#Event</a>
</p>
<p>
<i>Etichetta preferita@it</i>: Evento.
</p>
<p>
<i>Preferred label@en</i>: Event.
</p>
<p>
<i>Definizione@it</i>: “qualcosa che è successo”, come riportato in un giornale o da uno storico.
</p>
<p>
<i>Definition@en</i>: "Something that happened," as might be reported in a news article or explained by a historian.
</p>
<p>
<i>See Also</i>: <a href="http://linkedevents.org/ontology/Event">http://linkedevents.org/ontology/Event</a>
</p>
</div>
</div>
</div>
<div id="outline-container-3" class="outline-2">
<h2 id="sec-3">3 PROPERTIES </h2>
<div id="text-3">
<p>(Properties relate a Class, e.g. Person, to another Class or
property or to some value. Being a novice, teacher, deceased etc. is
one way in which a Person relates to the Salesian Society. In a Triple
of Subject-Predicate-Object, the property is the Predicate).
</p>
</div>
<div id="outline-container-3.1" class="outline-3">
<h3 id="sec-3.1">3.1 Properties whose domain is the class of PERSON </h3>
<div id="text-3.1">
</div>
<div id="outline-container-3.1.1" class="outline-4">
<h4 id="sec-3.1.1">3.1.1 novice (novizio) </h4>
<div id="text-3.1.1">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isNovice">http://www.sdb.org/vocabulary/sdbstats#isNovice</a>
</p>
<p>
<i>Etichetta preferita@it</i>: novizio.
</p>
<p>
<i>Preferred label@en</i>: novice.
</p>
<p>
<i>Definizione@it</i>: chi è entrato nella fase formale che si chiama il noviziato.
</p>
<p>
<i>Definition@en</i>: one who has begun the formal formation phase known as novitiate.
</p>
<p>
<i>Nota@it</i>: da notare che anche se 'range'=Formazione come settore, un novizio non è 'formando' per quanto riguarda i Dati Statstici.
</p>
<p>
<i>Note@en</i>: note that although 'range'=Formation (i.e. a novice
comes under that sector), he is not considered to be 'in formation' for
the purposes of the <i>Dati Statistici</i>.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Formation (a formation stage); also foaf:organization meaning that one is a novice of the organization known as Salesian.
</p>
</div>
</div>
<div id="outline-container-3.1.2" class="outline-4">
<h4 id="sec-3.1.2">3.1.2 in formation (formando) </h4>
<div id="text-3.1.2">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#inFormation">http://www.sdb.org/vocabulary/sdbstats#inFormation</a>
</p>
<p>
<i>Etichetta preferita@it</i>: formando.
</p>
<p>
<i>Preferred label@en</i>: in formation.
</p>
<p>
<i>Definizione@it</i>: dopo il noviziato, un confratello in una fase di formazione personale, che frequenta un centro di formazione.
</p>
<p>
<i>Definition@en</i>: a confrere in a stage of personal formation, attending a formation centre of some kind, following his novitiate.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere, temporarily or perpetually professed; also
foaf:organization meaning that one is a person in formation in the
organization known as Salesian.
</p>
</div>
</div>
<div id="outline-container-3.1.3" class="outline-4">
<h4 id="sec-3.1.3">3.1.3 newly professed (neoprofesso) </h4>
<div id="text-3.1.3">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isNewlyProfessed">http://www.sdb.org/vocabulary/sdbstats#isNewlyProfessed</a>
</p>
<p>
<i>Etichetta preferita@it</i>: neoprofesso.
</p>
<p>
<i>Preferred label@en</i>: newly professed.
</p>
<p>
<i>Definizione@it</i>: descrive chi ha passato dal noviziato alla prima professione.
</p>
<p>
<i>Definition@en</i>: describes someone who has just made first profession after completing his novitiate.
</p>
<p>
<i>Nota@it</i>: neoprofesso al momento in cui la statistica di un anno è stata calcolata.
</p>
<p>
<i>Note@en</i>: newly professed at the time the statistics for a particular year are being calculated.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere, temporary professed; also foaf:organization
meaning that one is a newly professed member of the organization known
as Salesian.
</p>
</div>
</div>
<div id="outline-container-3.1.4" class="outline-4">
<h4 id="sec-3.1.4">3.1.4 permanent deacon (diacono permanente) </h4>
<div id="text-3.1.4">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isDeacon">http://www.sdb.org/vocabulary/sdbstats#isDeacon</a>
</p>
<p>
<i>Etichetta preferita@it</i>: diacono permanente.
</p>
<p>
<i>Preferred label@en</i>: deacon.
</p>
<p>
<i>Definizione@it</i>: il diaconato restaurato come ufficio proprio e permanente della gerarchia ecclesiastica.
</p>
<p>
<i>Definition@en</i>: the restored form of proper and permanente diaconate in its own right as part of the Church's hierarchy.
</p>
<p>
<i>Nota@it</i>: è possible che un diacono permanente è di voti temporanei (se è trasferito da una Diocesi o da altra Congregazione).
</p>
<p>
<i>Note@en</i>: it is possible for a permanent deacon to be temporarily
professed if he has transferred from a Diocese or another Congregation.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.5" class="outline-4">
<h4 id="sec-3.1.5">3.1.5 brother (coadiutore) </h4>
<div id="text-3.1.5">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isBrother">http://www.sdb.org/vocabulary/sdbstats#isBrother</a>
</p>
<p>
<i>Etichetta preferita@it</i>: coadiutore.
</p>
<p>
<i>Preferred label@en</i>: brother.
</p>
<p>
<i>Definizione@it</i>: salesiano laico oppure coadiutore.
</p>
<p>
<i>Definition@en</i>: lay Salesian or Coadjutor.
</p>
<p>
<i>Note@en</i>: The term may sometimes be simply 'brother' in English, much preferred in most places to 'Lay Brother'.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.6" class="outline-4">
<h4 id="sec-3.1.6">3.1.6 priest (sacerdote) </h4>
<div id="text-3.1.6">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPriest">http://www.sdb.org/vocabulary/sdbstats#isPriest</a>
</p>
<p>
<i>Etichetta preferita@it</i>: sacerdote.
</p>
<p>
<i>Preferred label@en</i>: priest.
</p>
<p>
<i>Definizione@it</i>: nel senso di 'presbitero', cioè c'è una
distinzione tra 'sacerdozio' condiviso anche dal vescovo, e
'presbitero', il sacerdote.
</p>
<p>
<i>Definition@en</i>: in the sense of presbyterus, in Latin, which is distinct from sacerdotium, or the priestly state shared also with the
bishop. The presbyterus, instead, is the priest as such.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.7" class="outline-4">
<h4 id="sec-3.1.7">3.1.7 prelate (vescovo) </h4>
<div id="text-3.1.7">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPrelate">http://www.sdb.org/vocabulary/sdbstats#isPrelate</a>
</p>
<p>
<i>Etichetta preferita@it</i>: vescovo.
</p>
<p>
<i>Preferred label@en</i>: prelate.
</p>
<p>
<i>Definizione@it</i>: preminenza più competenza… chi esercita un potere pubblico nella chiesa.
</p>
<p>
<i>Definition@en</i>: preeminence plus jurisdiction. One who exercises public power in the Church.
</p>
<p>
<i>Nota@it</i>: il termine prelato è più ampio di 'vescovo'.
</p>
<p>
<i>Note@en</i>: a wider term than bishop.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: member of clergy with jurisdiction who has been a
Confrere (and remains one radically although now answerable to the Holy
See directly).
</p>
</div>
</div>
<div id="outline-container-3.1.8" class="outline-4">
<h4 id="sec-3.1.8">3.1.8 seminarian (seminarista) </h4>
<div id="text-3.1.8">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isSeminarian">http://www.sdb.org/vocabulary/sdbstats#isSeminarian</a>
</p>
<p>
<i>Etichetta preferita@it</i>: seminarista.
</p>
<p>
<i>Preferred label@en</i>: seminarian.
</p>
<p>
<i>Definizione@it</i>: candidato (dichiarato) per il sacerdozio.
</p>
<p>
<i>Definition@en</i>: candidate (declared) for priesthood.
</p>
<p>
<i>Nota@it</i>: spesso indicato in lingua (salesiana) comune come
'chierico', ma può darsi che si è solo dichiarato come candidato per il
sacerdozio e non ha finora ricevuto il titolo canonico di 'chierico'.
</p>
<p>
<i>Note@en</i>: often referred to in common (Salesian) parlance as a
'cleric', but may be simple declared as a candidate for priesthood and
not yet officially, canonically, a cleric.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere who is a priestly candidate.
</p>
</div>
</div>
<div id="outline-container-3.1.9" class="outline-4">
<h4 id="sec-3.1.9">3.1.9 professed (professi) </h4>
<div id="text-3.1.9">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isProfessed">http://www.sdb.org/vocabulary/sdbstats#isProfessed</a>
</p>
<p>
<i>Etichetta preferita@it</i>: professo.
</p>
<p>
<i>Preferred label@en</i>: professed.
</p>
<p>
<i>Definizione@it</i>: confratello vivo che ha emesso e non ha rinunciato i voti.
</p>
<p>
<i>Definition@en</i>: a living confrere who has professed vows and remains so.
</p>
<p>
<i>Nota@it</i>: agli scopi dei <i>Dati Statistici</i> e dell' <i>Annuario</i> questa proprietà è utile per indicare il totale dei confratelli professo senza contare in novizi.
</p>
<p>
<i>Note@en</i>: for the purposes of the <i>Dati Statistici</i> and the <i>Annuario</i> this property is useful for indicating the total of professed confreres, without counting in novices.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: All living professed confreres including bishops, who are counted in for the purpose of the statistics.
</p></div>
</div>
<div id="outline-container-3.1.10" class="outline-4">
<h4 id="sec-3.1.10">3.1.10 total confreres (totale confratelli) </h4>
<div id="text-3.1.10">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#totalConfreres">http://www.sdb.org/vocabulary/sdbstats#totalConfreres</a>
</p>
<p>
<i>Etichetta preferita@it</i>: totale complessivo di confratelli.
</p>
<p>
<i>Preferred label@en</i>: overall number of confreres.
</p>
<p>
<i>Definizione@it</i>: confratelli vivi incluso novizi e vescovi.
</p>
<p>
<i>Definition@en</i>: living confreres including novices and bishops.
</p>
<p>
<i>Nota@it</i>: agli scopi dei <i>Dati Statistici</i> e dell' <i>Annuario</i> questa proprietà è utile per indicare il totale dei confratelli contando anche novizi e vescovi.
</p>
<p>
<i>Note@en</i>: for the purposes of the <i>Dati Statistici</i> and the <i>Annuario</i> this property is useful for indicating the total number of confreres, including novices and bishops.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: All living confreres including novices and bishops, who are counted in for the purpose of the statistics.
</p></div>
</div>
<div id="outline-container-3.1.11" class="outline-4">
<h4 id="sec-3.1.11">3.1.11 past pupil (exallievo) </h4>
<div id="text-3.1.11">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasPastPupil">http://www.sdb.org/vocabulary/sdbstats#hasPastPupil</a>
</p>
<p>
<i>Etichetta preferita@it</i>: exallievo.
</p>
<p>
<i>Preferred label@en</i>: past pupil.
</p>
<p>
<i>Definizione@it</i>: ex alunno, o chi ha frequentato un centro salesiano.
</p>
<p>
<i>Definition@en</i>: a past student or someone who frequented a Salesian centre or institute.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: member of a local past pupils union.
</p>
</div>
</div>
<div id="outline-container-3.1.12" class="outline-4">
<h4 id="sec-3.1.12">3.1.12 cooperator (cooperatore/trice) </h4>
<div id="text-3.1.12">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isCooperator">http://www.sdb.org/vocabulary/sdbstats#isCooperator</a>
</p>
<p>
<i>Etichetta preferita@it</i>: cooperatore/trice.
</p>
<p>
<i>Preferred label@en</i>: Salesian Cooperator.
</p>
<p>
<i>Definizione@it</i>: chi ha emesso la sua promessa.
</p>
<p>
<i>Definition@en</i>: one who has made the promise.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: enrolled member of the Salesian Cooperators.
</p>
</div>
</div>
<div id="outline-container-3.1.13" class="outline-4">
<h4 id="sec-3.1.13">3.1.13 left (uscito) </h4>
<div id="text-3.1.13">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasLeft">http://www.sdb.org/vocabulary/sdbstats#hasLeft</a>
</p>
<p>
<i>Etichetta preferita@it</i>: uscito.
</p>
<p>
<i>Preferred label@en</i>: left.
</p>
<p>
<i>Definizione@it</i>: qualcuno che ha lasciato la Congregazione.
</p>
<p>
<i>Definition@en</i>: someone who has left the Congregation.
</p>
<p>
<i>Nota@it</i>: Sono possibili diverse motivi per cui qualcuno lascia la Congregazione: fine voti, dispensato, dimesso, trasferito ecc.
</p>
<p>
<i>Note@en</i>: There could be a range of motives for departure from
the Society: temporary vows expired, dispensed, dismissed, transferred
etc.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere who has formally left the Congregation.
</p>
</div>
</div>
<div id="outline-container-3.1.14" class="outline-4">
<h4 id="sec-3.1.14">3.1.14 temporary professed (temporaneo) </h4>
<div id="text-3.1.14">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isTemporarilyProfessed">http://www.sdb.org/vocabulary/sdbstats#isTemporarilyProfessed</a>
</p>
<p>
<i>Etichetta preferita@it</i>: temporaneo.
</p>
<p>
<i>Preferred label@en</i>: temporary professed.
</p>
<p>
<i>Definizione@it</i>: anche se l'intenzione sarebbe 'in perpetuo' il periodo determinato dalla Chiesa (dai normi dell'Istituto) la professione
inizialmente è temporanea normalmente per 6 anni o al massimo 9.
</p>
<p>
<i>Definition@en</i>: although the intention might be to take vows 'in
perpetuo', the Church (the Institute) determines that initially
profession is temporay for up to six years and not beyond 9.
</p>
<p>
<i>Nota@it</i>: un diacono permanente o prete può essere con voti temporanei se si è trasferito dalla Diocesi o da altro Istituto religioso.
</p>
<p>
<i>Note@en</i>: a permanent deacon or a priest could be in temporary vows if he has transferred from a Diocese or other religious Institute.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.15" class="outline-4">
<h4 id="sec-3.1.15">3.1.15 perpetually professed (perpetuo) </h4>
<div id="text-3.1.15">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPerpetuallyProfessed">http://www.sdb.org/vocabulary/sdbstats#isPerpetuallyProfessed</a>
</p>
<p>
<i>Etichetta preferita@it</i>: perpetuo.
</p>
<p>
<i>Preferred label@en</i>: perpetually professed.
</p>
<p>
<i>Definizione@it</i>: professione per tutta la propria vita.
</p>
<p>
<i>Definition@en</i>: profession for ones lifetime.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.16" class="outline-4">
<h4 id="sec-3.1.16">3.1.16 deceased (defunto) </h4>
<div id="text-3.1.16">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isDeceased">http://www.sdb.org/vocabulary/sdbstats#isDeceased</a>
</p>
<p>
<i>Etichetta preferita@it</i>: defunto.
</p>
<p>
<i>Preferred label@en</i>: deceased.
</p>
<p>
<i>Definizione@it</i>: non più vivo.
</p>
<p>
<i>Definition@en</i>: no longer living.
</p>
<p>
<i>Nota@it</i>: comprende anche novizi e prelati.
</p>
<p>
<i>Note@en</i>: novices are included, also prelates.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: novice, temporary and perpetually professed confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.17" class="outline-4">
<h4 id="sec-3.1.17">3.1.17 expired (fino Voti) </h4>
<div id="text-3.1.17">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isExpired">http://www.sdb.org/vocabulary/sdbstats#isExpired</a>
</p>
<p>
<i>Etichetta preferita@it</i>: fino voti.
</p>
<p>
<i>Preferred label@en</i>: expired.
</p>
<p>
<i>Definizione@it</i>: si riferisce solo al professo temporaneo dopo la scadenza dei voti – o si rinnova o si lascia la Congregazione.
</p>
<p>
<i>Definition@en</i>: In reference only to temporary professed members who must renew their vows or leave the Congregation.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: temporary professed Confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.18" class="outline-4">
<h4 id="sec-3.1.18">3.1.18 dispensed (dispensato) </h4>
<div id="text-3.1.18">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isDispensed">http://www.sdb.org/vocabulary/sdbstats#isDispensed</a>
</p>
<p>
<i>Etichetta preferita@it</i>: dispenso.
</p>
<p>
<i>Preferred label@en</i>: dispensed.
</p>
<p>
<i>Definizione@it</i>: un modo di lasciare la Congregazione, dispensato ufficialmente dall'autorità competente dai voti per una causa giusta.
</p>
<p>
<i>Definition@en</i>: one way of leaving the Congregation, by being officially dispensed for a just cause from the vows by the competent
authority.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Professed Confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.19" class="outline-4">
<h4 id="sec-3.1.19">3.1.19 dispensed from celibacy (dispensato dal celibato) </h4>
<div id="text-3.1.19">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isDispensedFromCelibacy">http://www.sdb.org/vocabulary/sdbstats#isDispensedFromCelibacy</a>
</p>
<p>
<i>Etichetta preferita@it</i>: dispenso dal celibato.
</p>
<p>
<i>Preferred label@en</i>: dispensed from celibacy.
</p>
<p>
<i>Definizione@it</i>: un rescritto dalla Santa Sede per cui il
sacerdote non è più obbligato al celibato sacerdotale. Non appartiene
più allo stato clericale e i suoi diritti e non può esercitare il suo
ministero.
</p>
<p>
<i>Definition@en</i>: a rescript from the Holy see by which the priest
is dispensed from the obligation of priestly celibacy. He no longer
belongs to the clerical state or its rights and cannot exercise any
priestly ministry.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: priest or deacon.
</p>
</div>
</div>
<div id="outline-container-3.1.20" class="outline-4">
<h4 id="sec-3.1.20">3.1.20 transferred to diocese (passato alla diocesi) </h4>
<div id="text-3.1.20">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#transferredToDiocese">http://www.sdb.org/vocabulary/sdbstats#transferredToDiocese</a>
</p>
<p>
<i>Etichetta preferita@it</i>: passato alla diocesi.
</p>
<p>
<i>Preferred label@en</i>: transferred to diocese.
</p>
<p>
<i>Definizione@it</i>: quando un sacerdote o diacono permanente lascia
la Congregazione per essere incorporato (incardinato) in una diocesi.
Si chiama anche secolarizzazione.
</p>
<p>
<i>Definition@en</i>: when a priest or permanent deacon leaves the
Congregation to be incorporated (incardinated) into a Diocese. Also
known as secularization.
</p>
<p>
<i>Nota@it</i>: l'etichetta si applica alla conclusione della practica, non durante il processo.
</p>
<p>
<i>Note@en</i>: this label is applied once the process has concluded with definitive incardination, not during the process.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: priest, permanent deacon.
</p>
</div>
</div>
<div id="outline-container-3.1.21" class="outline-4">
<h4 id="sec-3.1.21">3.1.21 dismissed (dimesso) </h4>
<div id="text-3.1.21">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isDismissed">http://www.sdb.org/vocabulary/sdbstats#isDismissed</a>
</p>
<p>
<i>Etichetta preferita@it</i>: dimesso.
</p>
<p>
<i>Preferred label@en</i>: dismissed.
</p>
<p>
<i>Definizione@it</i>: il processo per cui un socio è separata dalla
Congregazione o in forza del diritto (ipso facto, obbligatoria) o per
un decreto del Superior generale.
</p>
<p>
<i>Definition@en</i>: process by which a member is separated from the
Congregation either by law (ipso facto, obligatory) or by decree of the
Superior General.
</p>
<p>
<i>Nota@it</i>: agli scopi dei Dati Statistici non si tratta qui di un novizio.
</p>
<p>
<i>Note@en</i>: for the purposes of the Dati Statistici we are not dealing with the case of a novice here.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.22" class="outline-4">
<h4 id="sec-3.1.22">3.1.22 SDB full time (sdb pieno tempo) </h4>
<div id="text-3.1.22">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isFullTime">http://www.sdb.org/vocabulary/sdbstats#isFullTime</a>
</p>
<p>
<i>Etichetta preferita@it</i>: sdb a pieno tempo.
</p>
<p>
<i>Preferred label@en</i>: sdb full-time.
</p>
<p>
<i>Definizione@it</i>: sdb con un singolo incarico principale, p.e. formatore, insegnante, oratorio, ma non tutti i tre. Sceglierne uno
</p>
<p>
<i>Definition@en</i>: sdb with a single main assignment, e.g. formator, teacher, oratory, but not all three. Choose one
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.23" class="outline-4">
<h4 id="sec-3.1.23">3.1.23 SDB part time (sdb tempo parziale) </h4>
<div id="text-3.1.23">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPartTime">http://www.sdb.org/vocabulary/sdbstats#isPartTime</a>
</p>
<p>
<i>Etichetta preferita@it</i>: sdb a tempo parziale.
</p>
<p>
<i>Preferred label@en</i>: sdb part-time.
</p>
<p>
<i>Definizione@it</i>: sdb con uno o più incarichi che svolge a tempo parziale.
</p>
<p>
<i>Definition@en</i>: sdb with one or more assignments which he carries out part time
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Confrere.
</p>
</div>
</div>
<div id="outline-container-3.1.24" class="outline-4">
<h4 id="sec-3.1.24">3.1.24 beneficiary (destinatario) </h4>
<div id="text-3.1.24">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isBeneficiary">http://www.sdb.org/vocabulary/sdbstats#isBeneficiary</a>
</p>
<p>
<i>Etichetta preferita@it</i>: destinatario.
</p>
<p>
<i>Preferred label@en</i>: beneficiary.
</p>
<p>
<i>Alternative label@en</i>: pupil.
</p>
<p>
<i>Alternative label@en</i>: faithful.
</p>
<p>
<i>Definizione@it</i>: il gruppo (o il singolo) 'target'.
</p>
<p>
<i>Definition@en</i>: target group or individual.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Salesian works, activities, services.
</p>
<div id="outline-container-3.1.25" class="outline-4">
<h4 id="sec-3.1.25">3.1.25 role classification (ruolo) </h4>
<div id="text-3.1.25">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasRole">http://www.sdb.org/vocabulary/sdbstats#hasRole</a>
</p>
<p>
<i>Etichetta preferita@it</i>: ruolo.
</p>
<p>
<i>Definizione@it</i>: un ruolo come definito nel <i>Annuario</i> nella forma canonica in italiano, rappresentata dal codice in parentesi.
</p>
<p>
<i>Definition@en</i>: a role as defined in the <i>Annuario</i> in its canonical form in Italian, represented by the code in parentheses.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Values of this property are: Cooperator Delegate (Co), Councillor (Cs), Rector or Director (Dt), Economer or Bursar (Ec), Past Pupils Delegate (Ex), Director of Novices (Ma), Director of Oratory (Or), Parish Priest (Pr), Principal (Ps), Rector of Shrine (Rt), Vice Rector (Vc).
</p>
<div id="outline-container-3.1.26" class="outline-4">
<h4 id="sec-3.1.26">3.1.26 status classification (stato) </h4>
<div id="text-3.1.26">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasStatus">http://www.sdb.org/vocabulary/sdbstats#hasStatus</a>
</p>
<p>
<i>Etichetta preferita@it</i>: stato.
</p>
<p>
<i>Preferred label@en</i>: status.
</p>
<p>
<i>Definizione@it</i>: Uno stato personale come elencato nel <i>Annuario</i> nella forma canonica in latino, rappresentata dal codice in parentesi.
</p>
<p>
<i>Definition@en</i>: A personal status as listed in the <i>Annuario</i> in its canonical form in Latin, represented by the code in parentheses.
</p>
<p>
<i>Domain</i>: The class known as Person.
</p>
<p>
<i>Range</i>: Values of this property are: Diaconus (D) [diac], Episcopus (E) [Mons], Laicus (L) [Coad], Presbyter (P) [sac], Scholasticus (S) [ch], Novitius (N).
</p></div>
</div>
</div>
<div id="outline-container-3.2" class="outline-3">
<h3 id="sec-3.2">3.2 Properties whose domain is the class of SECTOR </h3>
<div id="text-3.2">
</div>
<div id="outline-container-3.2.1" class="outline-4">
<h4 id="sec-3.2.1">3.2.1 Vocation-oriented type </h4>
<div id="text-3.2.1">
<ul>
<li id="sec-3.2.1.1"><a name="3.2.1.1" />3.2.1.1 vocational guidance centre (centro di orientamento vocazionale) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isVocationGuidanceCentre">http://www.sdb.org/vocabulary/sdbstats#isVocationGuidanceCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro di orientamento vocazionale.
</p>
<p>
<i>Preferred label@en</i>: vocational guidance centre.
</p>
<p>
<i>Definizione@it</i>: opera di largo orientamento vocazionale, soprattutto per i preadolecenti.
</p>
<p>
<i>Definition@en</i>: a Work broadly directed to vocational guidance, especially for pre-teens.
</p>
<p>
<i>Nota@it</i>: conosciuto sotto diversi titoli: scuola apostolica, preaspirantato o simile.
</p>
<p>
<i>Note@en</i>: may be called apostolic school, preaspirantate or other similar name.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: male candidates for Religious life; SDBs full-time or part-time or others who run such a centre.
</p>
</li>
<li id="sec-3.2.1.2"><a name="3.2.1.2" />3.2.1.2 vocation community (comunità accoglienza) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isVocationCommunity">http://www.sdb.org/vocabulary/sdbstats#isVocationCommunity</a>
</p>
<p>
<i>Etichetta preferita@it</i>: comunità accoglienza.
</p>
<p>
<i>Preferred label@en</i>: vocation community.
</p>
<p>
<i>Definizione@it</i>: comunità che accoglie un gruppo di giovani orientati alla vita salesiana (vivendo in comunità).
</p>
<p>
<i>Definition@en</i>: a community that takes in young people who have shown an interest in Salesian life (they live in community for a period).
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: male candidates for Salesian life; SDBs full-time or part-time involved with such a community.
</p>
</li>
<li id="sec-3.2.1.3"><a name="3.2.1.3" />3.2.1.3 aspirantate (aspirantato) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isAspirantate">http://www.sdb.org/vocabulary/sdbstats#isAspirantate</a>
</p>
<p>
<i>Etichetta preferita@it</i>: aspirantato.
</p>
<p>
<i>Preferred label@en</i>: aspirantate.
</p>
<p>
<i>Definizione@it</i>: casa destinata specificamente all'orientamento vocazionale, secondo i criteri indicati da Reg. 17.
</p>
<p>
<i>Definition@en</i>: a house specifically designated for vocational guidance (to Salesian life) following criteria indicated in R. 17.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: male candidates for Salesian life; SDBs full-time or part-time or others involved in this House and its chief purpose.
</p>
</li>
<li id="sec-3.2.1.4"><a name="3.2.1.4" />3.2.1.4 prenovitiate (prenoviziato) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPrenovitiate">http://www.sdb.org/vocabulary/sdbstats#isPrenovitiate</a>
</p>
<p>
<i>Etichetta preferita@it</i>: prenoviziato.
</p>
<p>
<i>Preferred label@en</i>: prenovitiate.
</p>
<p>
<i>Definizione@it</i>: struttura specifica per la preparazione prossima al Noviziato, secondo i vari Direttori ispettoriali.
</p>
<p>
<i>Definition@en</i>: specifically set up for proximate preparation for
the Novitiate, according to what is laid down in various Province
Directories.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: male candidates for Salesian life; SDBs full-time or part-time or others involved in this House and its chief purpose.
</p>
</li>
<li id="sec-3.2.1.5"><a name="3.2.1.5" />3.2.1.5 novitiate (noviziato) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isNovitiate">http://www.sdb.org/vocabulary/sdbstats#isNovitiate</a>
</p>
<p>
<i>Etichetta preferita@it</i>: noviziato.
</p>
<p>
<i>Preferred label@en</i>: novitiate.
</p>
<p>
<i>Definizione@it</i>: tappa iniziale della vita religiosa salesiana.
</p>
<p>
<i>Definition@en</i>: initial stage in Salesian Religious Life.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: male candidates for Salesian life; Confreres (formators) SDB full-time or part-time.
</p>
</li>
<li id="sec-3.2.1.6"><a name="3.2.1.6" />3.2.1.6 postnovitiate (Salesian) (postnoviziato salesiano) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isSdbPostnovitiate">http://www.sdb.org/vocabulary/sdbstats#isSdbPostnovitiate</a>
<p>
<i>Etichetta preferita@it</i>: postnoviziato salesiano.
</p>
<p>
<i>Preferred label@en</i>: Salesian postnovitiate.
</p>
<p>
<i>Definizione@it</i>: postnoviziato con centro studi salesiano.
</p>
<p>
<i>Definition@en</i>: postnovitiate with Salesian study centre.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: male candidates for Salesian life; Confreres (formators) SDB full-time or part-time.
</p></li>
<li id="sec-3.2.1.7"><a name="3.2.1.7" />3.2.1.7 postnovitiate (non-Salesian) (postnoviziato non salesiano) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isNonSdbPostnovitiate">http://www.sdb.org/vocabulary/sdbstats#isNonSdbPostnovitiate</a>
<p>
<i>Etichetta preferita@it</i>: postnoviziato non salesiano.
</p>
<p>
<i>Preferred label@en</i>: non-Salesian postnovitiate.
</p>
<p>
<i>Definizione@it</i>: comunità formatrice con centro studi non-salesiano esterno.
</p>
<p>
<i>Definition@en</i>: formation community with external non-Salesian study centre.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: male candidates for Salesian life; Confreres (formators) SDB full-time or part-time.
</p></li>
<li id="sec-3.2.1.8"><a name="3.2.1.8" />3.2.1.8 postnovitiate for brothers (postnoviziato per coadiutori) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isBrotherPostnovitiate">http://www.sdb.org/vocabulary/sdbstats#isBrotherPostnovitiate</a>
<p>
<i>Etichetta preferita@it</i>: postnoviziato per coadiutori.
</p>
<p>
<i>Preferred label@en</i>: postnovitiate for brothers.
</p>
<p>
<i>Definizione@it</i>: postnoviziato solo per i coadiutori.
</p>
<p>
<i>Definition@en</i>: postnovitiate only for coadjutor brothers.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: male candidates for Salesian life who are not candidates for priesthood; Confreres (formators) SDB full-time or part-time.
</p></li>
<li id="sec-3.2.1.9"><a name="3.2.1.9" />3.2.1.9 Salesian theologate (teologato salesiano) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isSdbTheologate">http://www.sdb.org/vocabulary/sdbstats#isSdbTheologate</a>
</p>
<p>
<i>Etichetta preferita@it</i>: teologato salesiano.
</p>
<p>
<i>Preferred label@en</i>: Salesian theologate.
</p>
<p>
<i>Definizione@it</i>: teologato con centro studi salesiano.
</p>
<p>
<i>Definition@en</i>: theologate with Salesian study centre.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Confreres who are candidates for priestly ministry; Confreres (formators) SDB full-time or part-time.
</p>
</li>
<li id="sec-3.2.1.10"><a name="3.2.1.10" />3.2.1.10 Non-Salesian theologate (teologato non salesiano) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isNonSdbTheologate">http://www.sdb.org/vocabulary/sdbstats#isNonSdbTheologate</a>
</p>
<p>
<i>Etichetta preferita@it</i>: teologato non salesiano.
</p>
<p>
<i>Preferred label@en</i>: non-Salesian theologate.
</p>
<p>
<i>Definizione@it</i>: comunità formatrice per teologi con centro studi non salesiano.
</p>
<p>
<i>Definition@en</i>: formation community for theology students with a non-Salesian study centre.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries; Confreres (formators) SDB full-time or part-time.
</p>
</li>
<li id="sec-3.2.1.11"><a name="3.2.1.11" />3.2.1.11 ongoing formation centre (centro formazione permanente) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isOngoingFormationCentre">http://www.sdb.org/vocabulary/sdbstats#isOngoingFormationCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro formazione permanente.
</p>
<p>
<i>Preferred label@en</i>: ongoing formation centre.
</p>
<p>
<i>Definizione@it</i>: una struttura specifica per la formazione permanente dei salesiani (anche se aperto ad altri membri della FS).
</p>
<p>
<i>Definition@en</i>: a setup specifically organized for ongoing formation of Salesians even if it is also open to other Salesian Family members.
</p>
<p>
<i>Nota@it</i>: se si tratta prevalentamente dei coadiutori, sarebbe altra voce qui sotto.
</p>
<p>
<i>Note@en</i>: if the group is largely made up of brothers, then apply the label below instead.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Confreres, those in ongoing formation and formators full-time or part-time.
</p>
</li>
<li id="sec-3.2.1.12"><a name="3.2.1.12" />3.2.1.12 brothers formation centre (centro formazione permenente coadiutori) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isBrothersCentre">http://www.sdb.org/vocabulary/sdbstats#isBrothersCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro formazione permanente coadiutori.
</p>
<p>
<i>Preferred label@en</i>: brothers formation centre.
</p>
<p>
<i>Definizione@it</i>: una struttura specifica per la formazione permanente dei coadiutori.
</p>
<p>
<i>Definition@en</i>: a specific setup for ongoing formation of brothers.
</p>
<p>
<i>Nota@it</i>: sia al livello del postnoviziato che al livello del posttirocinio. Sono pochi.
</p>
<p>
<i>Note@en</i>: whether at postnovitiate or post-practical training level. There are very few of these.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Confreres (brothers in temporary or perpetual vows as formandi or SDB full or part time as formators).
</p>
</li>
<li id="sec-3.2.1.13"><a name="3.2.1.13" />3.2.1.13 diocesan seminary (seminario diocesano) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isDiocesanSeminary">http://www.sdb.org/vocabulary/sdbstats#isDiocesanSeminary</a>
</p>
<p>
<i>Etichetta preferita@it</i>: seminario diocesano.
</p>
<p>
<i>Preferred label@en</i>: diocesan seminary.
</p>
<p>
<i>Definizione@it</i>: seminario animato dai Salesiani per la Diocesi.
</p>
<p>
<i>Definition@en</i>: seminary managed by Salesians for the Diocese.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: SDB full-time or part-time (management and/or formation).
</p>
</li>
</ul>
</div>
</div>
<div id="outline-container-3.2.2" class="outline-4">
<h4 id="sec-3.2.2">3.2.2 Youth Ministry-oriented type </h4>
<div id="text-3.2.2">
<ul>
<li id="sec-3.2.2.1"><a name="3.2.2.1" />3.2.2.1 festive oratory (oratorio festivo) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isFestiveOratory">http://www.sdb.org/vocabulary/sdbstats#isFestiveOratory</a>
</p>
<p>
<i>Etichetta preferita@it</i>: oratorio festivo.
</p>
<p>
<i>Preferred label@en</i>: festive oratory.
</p>
<p>
<i>Definizione@it</i>: ambiente salesiano destinato specialmente ai ragazzi (preadolescenti e bambini), aperti alla massa, che favoriscono
espressioni di tempo libero e incontro religioso e che opera prevalentemente nei fine settimana.
</p>
<p>
<i>Definition@en</i>: Salesian setting especially aimed at youngsters
(pre-teens and younger), open to the masses, mostly for leisure and
religious encounter, and which operates mainly at weekends.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
<p>
<i>See Also</i>: <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Oratory">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Oratory</a>
</p>
</li>
<li id="sec-3.2.2.2"><a name="3.2.2.2_" />3.2.2.2 daily oratory (oratorio quotidiano) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isDailyOratory">http://www.sdb.org/vocabulary/sdbstats#isDailyOratory</a>
</p>
<p>
<i>Etichetta preferita@it</i>: oratorio quotidiano.
</p>
<p>
<i>Preferred label@en</i>: daily oratory.
</p>
<p>
<i>Definizione@it</i>: ambiente salesiano destinato specialmente ai ragazzi (preadolescenti e bambini), aperti alla massa, che favoriscono
espressioni di tempo libero e incontro religioso e che è aperto nei giorni feriali.
</p>
<p>
<i>Definition@en</i>: Salesian setting especially aimed at youngsters
(pre-teens and younger), open to the masses, mostly for leisure and
religious encounter, and which is open weekdays.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
<p>
<i>See Also</i>: <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Oratory">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Oratory</a>
</p>
</li>
<li id="sec-3.2.2.3"><a name="3.2.2.3" />3.2.2.3 youth centre (centro giovanile) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isYouthCentre">http://www.sdb.org/vocabulary/sdbstats#isYouthCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro giovanile.
</p>
<p>
<i>Preferred label@en</i>: youth centre.
</p>
<p>
<i>Definizione@it</i>: ambiente destinato soprattutto agli adolescenti e giovani, dove prevale la metodologia di gruppo.
</p>
<p>
<i>Definition@en</i>: a setting aimed principally at teenagers and older youth, where group approaches are prevalent.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
<p>
<i>See Also</i>: <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.YouthCentre">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.YouthCentre</a>
</p>
</li>
<li id="sec-3.2.2.4"><a name="3.2.2.4" />3.2.2.4 oratory youth centre (oratorio centro giovanile) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isOratoryYouthCentre">http://www.sdb.org/vocabulary/sdbstats#isOratoryYouthCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: oratorio centro giovanile.
</p>
<p>
<i>Preferred label@en</i>: oratory youth centre.
</p>
<p>
<i>Definizione@it</i>: dove si trova insieme la realtà dell'oratorio e quella del centro giovanile.
</p>
<p>
<i>Definition@en</i>: where both oratory and youth centre exist together.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
<p>
<i>See Also</i>: <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.YouthCentre">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.YouthCentre</a>
</p>
</li>
<li id="sec-3.2.2.5"><a name="3.2.2.5" />3.2.2.5 preschool (prescolare) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPreschool">http://www.sdb.org/vocabulary/sdbstats#isPreschool</a>
</p>
<p>
<i>Etichetta preferita@it</i>: prescolare.
</p>
<p>
<i>Preferred label@en</i>: preschool.
</p>
<p>
<i>Definizione@it</i>: la prima fase di istruzione per fanciulli fino a 5-6 anni di età. Può essere chiamata 'scuola materna'.
</p>
<p>
<i>Definition@en</i>: education for pre- and emergent-literate before the age of six or seven. May also be known as kindergarten in some countries.
</p>
<p>
<i>Nota@it</i>: in generale (anche se non sempre) è legata ad altra
scuola salesiana e animata da collaboratori. Può essere d'obbligo in
alcuni paesi.
</p>
<p>
<i>Note@en</i>: it generally forms part of a more extended Salesian
school and is managed by lay staff. IT may be compulsory in some
countries, optional in others.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.6"><a name="3.2.2.6" />3.2.2.6 primary school (scuola primaria) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPrimarySchool">http://www.sdb.org/vocabulary/sdbstats#isPrimarySchool</a>
</p>
<p>
<i>Etichetta preferita@it</i>: scuola primaria.
</p>
<p>
<i>Preferred label@en</i>: primary school.
</p>
<p>
<i>Definizione@it</i>: è in genere scuola dell'obbligo e abbraccia un
numero più o meno grande di anni (ragazzi fino a 11 o 12 anni di età).
Anche conosciuta come scuola elementare o di base.
</p>
<p>
<i>Definition@en</i>: the beginning of compulsory education in most
countries, and includes children usually up to the ages of 11 or 12.
Called elementary school in many instances in English.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.7"><a name="3.2.2.7" />3.2.2.7 lower secondary (scuola secondaria primo grado) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#islowerSecondary">http://www.sdb.org/vocabulary/sdbstats#islowerSecondary</a>
</p>
<p>
<i>Etichetta preferita@it</i>: scuola secondaria primo grado.
</p>
<p>
<i>Preferred label@en</i>: lower secondary.
</p>
<p>
<i>Definizione@it</i>: scuola fino a 14 anni di età o in alcuni casi fino a 15.
</p>
<p>
<i>Definition@en</i>: schooling as far as 14-15 years of age.
</p>
<p>
<i>Nota@it</i>: da notare che termini come 'middle school', 'high
school' sono ambigui. In alcune parti del mondo ragazzi di middle
school avrebbero 15-16 anni, e high school può abbracciare tutta la
educazione secondaria. Per questo è stata indicata qui 14 or 15 anni di
età secondo la classificazione in vigore per l'Italia. Ciò detto, in
Italia scuola secondaria primo grado può essere anche 'scuola media'.
</p>
<p>
<i>Note@en</i>: Note that Middle School or High School are ambiguous
terms since they are interpreted differently in different school
systems. Students in Middle School may be 15-16 in some places, or
younger in others. This is why 14-15 years of age has been selected as
the dividing line between secondary 'primo grado' and 'secondo grado',
following the classification which applies in Italy. That said, in
Italy, 'scuola secondaria primo grado' can be called 'scuola media'.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.8"><a name="3.2.2.8" />3.2.2.8 upper secondary (scuola secondaria secondo grado) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isUpperSecondary">http://www.sdb.org/vocabulary/sdbstats#isUpperSecondary</a>
</p>
<p>
<i>Etichetta preferita@it</i>: scuola secondaria secondo grado.
</p>
<p>
<i>Preferred label@en</i>: upper secondary.
</p>
<p>
<i>Definizione@it</i>: scuola da 15 o 16 anni di età in più.
</p>
<p>
<i>Definition@en</i>: schooling extending beyond compulsory schooling age (which is 16 in Italy and indeed in many parts of the world).
</p>
<p>
<i>Nota@it</i>: cfr la nota per scuola secondario di primo grado.
</p>
<p>
<i>Note@en</i>: refer note for lower secondary.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.9"><a name="3.2.2.9" />3.2.2.9 basic literacy (scuola alfabetizzazione) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isBasicLiteracy">http://www.sdb.org/vocabulary/sdbstats#isBasicLiteracy</a>
</p>
<p>
<i>Etichetta preferita@it</i>: scuola alfabetizzazione.
</p>
<p>
<i>Preferred label@en</i>: basic literacy.
</p>
<p>
<i>Definizione@it</i>: spesso informale, sono scuole per la prima alfabetizzazione.
</p>
<p>
<i>Definition@en</i>: often informal type of schooling, they exist for the purposes of basic literacy
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal and informal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.10"><a name="3.2.2.10" />3.2.2.10 mission school (scuola parrocchiale missionaria) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isMissionSchool">http://www.sdb.org/vocabulary/sdbstats#isMissionSchool</a>
</p>
<p>
<i>Etichetta preferita@it</i>: scuola parrocchiale missionaria.
</p>
<p>
<i>Preferred label@en</i>: mission school.
</p>
<p>
<i>Definizione@it</i>: scuole specie nei luoghi di missione spesso con Salesiano come punto di riferimento o garanzia.
</p>
<p>
<i>Definition@en</i>: mission-based schools often with a Salesian (parish priest) as their point of reference or guarantee.
</p>
<p>
<i>Nota@it</i>: questo tipo di scuola non va confuso con la scuola parrocchiale primaria che si trova di norma nelle città.
</p>
<p>
<i>Note@en</i>: this kind of school should not be confused with the normal parish primary school found in most city areas.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.11"><a name="3.2.2.11" />3.2.2.11 professional school (scuola professionale) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isProfessionalSchool">http://www.sdb.org/vocabulary/sdbstats#isProfessionalSchool</a>
</p>
<p>
<i>Etichetta preferita@it</i>: scuola professionale.
</p>
<p>
<i>Preferred label@en</i>: trade school.
</p>
<p>
<i>Definizione@it</i>: scuola di formazione e avviamento al lavoro.
</p>
<p>
<i>Definition@en</i>: predominantly a trade school.
</p>
<p>
<i>Nota@it</i>: può essere anche un centro di formazione professionale.
</p>
<p>
<i>Note@en</i>: could also be more the case of a centre where trades and associated subjects are taught.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.12"><a name="3.2.2.12" />3.2.2.12 agricultural school (scuola agricola) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isAgriculturalSchool">http://www.sdb.org/vocabulary/sdbstats#isAgriculturalSchool</a>
</p>
<p>
<i>Etichetta preferita@it</i>: scuola agricola.
</p>
<p>
<i>Preferred label@en</i>: agricultural school.
</p>
<p>
<i>Definizione@it</i>: scuola di formazione con corsi di agricoltura.
</p>
<p>
<i>Definition@en</i>: general education also involving agricultural courses.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.13"><a name="3.2.2.13" />3.2.2.13 technical school (scuola secondaria tecnica) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isTechnicalSchool">http://www.sdb.org/vocabulary/sdbstats#isTechnicalSchool</a>
</p>
<p>
<i>Etichetta preferita@it</i>: scuola secondaria tecnica.
</p>
<p>
<i>Preferred label@en</i>: technical school.
</p>
<p>
<i>Definizione@it</i>: una scuola con una configurazione specifica (tecnica) nel percorso di insegnamento secondario.
</p>
<p>
<i>Definition@en</i>: a school with a specific technical course of instruction.
</p>
<p>
<i>Nota@it</i>: distinto da una scuola dove esiste una mescola di materie accademiche e tecniche.
</p>
<p>
<i>Note@en</i>: as distinct from one where all students would take a mixture of academic and technical subjects.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.14"><a name="3.2.2.14" />3.2.2.14 university level (istituto universitario) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isUniversityLevel">http://www.sdb.org/vocabulary/sdbstats#isUniversityLevel</a>
</p>
<p>
<i>Etichetta preferita@it</i>: istituto universitario.
</p>
<p>
<i>Preferred label@en</i>: university level.
</p>
<p>
<i>Definizione@it</i>: anche conosciuto in italiano come istituto di insegnamento superiore, si intende una scuola al livello universitario,
oppure facoltà universitaria, anche 'college' (US).
</p>
<p>
<i>Definition@en</i>: institute of higher education, university faculty or College (US).
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.15"><a name="3.2.2.15" />3.2.2.15 adult education (corso qualificazione adulti) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isAdultEducation">http://www.sdb.org/vocabulary/sdbstats#isAdultEducation</a>
</p>
<p>
<i>Etichetta preferita@it</i>: corso qualificazione adulti.
</p>
<p>
<i>Preferred label@en</i>: adult education.
</p>
<p>
<i>Definizione@it</i>: corsi per la qualificazione di adulti.
</p>
<p>
<i>Definition@en</i>: adult education courses.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal and informal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.16"><a name="3.2.2.16" />3.2.2.16 boarding school (convitto) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isBoardingSchool">http://www.sdb.org/vocabulary/sdbstats#isBoardingSchool</a>
</p>
<p>
<i>Etichetta preferita@it</i>: convitto.
</p>
<p>
<i>Preferred label@en</i>: boarding school.
</p>
<p>
<i>Definizione@it</i>: una struttura che accoglie e educa i giovani, i quali frequentano una scuola all'interno dell'opera salesiana.
</p>
<p>
<i>Definition@en</i>: a boarding school where students live in and attend the Salesian school as part of the same structure.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.17"><a name="3.2.2.17" />3.2.2.17 hostel (pensionato) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isLowerSecHostel">http://www.sdb.org/vocabulary/sdbstats#isLowerSecHostel</a>
</p>
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isUpperSecHostel">http://www.sdb.org/vocabulary/sdbstats#isUpperSecHostel</a>
</p>
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isUniHostel">http://www.sdb.org/vocabulary/sdbstats#isUniHostel</a>
</p>
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isWorkersHostel">http://www.sdb.org/vocabulary/sdbstats#isWorkersHostel</a>
</p>
<p>
<i>Etichetta preferita@it</i>: pensionato (scuola media, scuola superiore, universitario, lavorati).
</p>
<p>
<i>Preferred label@en</i>: hostel (lower secondary, upper secondary, university, young workers).
</p>
<p>
<i>Definizione@it</i>: alloggia i giovani ma frequentano centri (scolastici) fuori della casa salesiana.
</p>
<p>
<i>Definition@en</i>: provides boarding but the students attend classes outside of the Salesian centre.
</p>
<p>
<i>Nota@it</i>: ci sono diversi livelli, quindi effettivamente si tratta di scuola media, scuola superiore, universitario o lavoratorio.
</p>
<p>
<i>Note@en</i>: there are various levels so effectively it will be a
case of indicating which: lower secondary, upper secondary, university
or for young workers.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: formal (secondary and tertiary) education; beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.18"><a name="3.2.2.18" />3.2.2.18 youth at risk (opera giovani emarginati) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isYouthAtRisk">http://www.sdb.org/vocabulary/sdbstats#isYouthAtRisk</a>
</p>
<p>
<i>Etichetta preferita@it</i>: opera giovani emarginati.
</p>
<p>
<i>Preferred label@en</i>: youth at risk.
</p>
<p>
<i>Definizione@it</i>: opera giovanile specificamente rivolta a ragazzi e giovani in particolare difficoltà.
</p>
<p>
<i>Definition@en</i>: a Work addressed specifically to young people with problems.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.2.19"><a name="3.2.2.19" />3.2.2.19 catechetical centre (centro catechistico) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isCatecheticalCentre">http://www.sdb.org/vocabulary/sdbstats#isCatecheticalCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro catechistico.
</p>
<p>
<i>Preferred label@en</i>: catechetical centre.
</p>
<p>
<i>Definizione@it</i>: centro specifico per l'animazione della catechesi, formazione di catechisti, produzione di sussidi ecc.
</p>
<p>
<i>Definition@en</i>: centre specifically geared to catechetics or forming catechists, producing catechetical materials etc.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: province services; personnel, beneficiaries.
</p>
</li>
<li id="sec-3.2.2.20"><a name="3.2.2.20" />3.2.2.20 leisure centre (centro animazione tempo libero) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isLeisureCentre">http://www.sdb.org/vocabulary/sdbstats#isLeisureCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro animazione tempo libero.
</p>
<p>
<i>Preferred label@en</i>: leisure centre.
</p>
<p>
<i>Definizione@it</i>: centro di accoglienza e convivenza dei giovani nel loro tempo libero (p.e. colonie).
</p>
<p>
<i>Definition@en</i>: centre which takes in youngsters over a leisure period (e.g. holiday camps).
</p>
<p>
<i>Nota@it</i>: la convivenza giovanile è un caratteristico essenziale di questa categoria.
</p>
<p>
<i>Note@en</i>: the live-in feature is an essential part of this category.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: province services; personnel, beneficiaries.
</p>
</li>
</ul>
</div>
</div>
<div id="outline-container-3.2.3" class="outline-4">
<h4 id="sec-3.2.3">3.2.3 communications-oriented type </h4>
<div id="text-3.2.3">
<ul>
<li id="sec-3.2.3.1"><a name="3.2.3.1" />3.2.3.1 province comms. centre (centro ispettoriale comunicazione sociale) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isProvinceScCentre">http://www.sdb.org/vocabulary/sdbstats#isProvinceScCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro ispettoriale comunicazione sociale.
</p>
<p>
<i>Preferred label@en</i>: province communications centre.
</p>
<p>
<i>Definizione@it</i>: centro di propulsione e animazione a livello ispettoriale, secondo le indicazioni del Dicastero CS.
</p>
<p>
<i>Definition@en</i>: a communications centre aimed at providing
impetus and leadership at Province level, following directions from the
SC Department.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: personnel.
</p>
</li>
<li id="sec-3.2.3.2"><a name="3.2.3.2" />3.2.3.2 audio-visual centre (centro audiovisivo) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isAudiovisualCentre">http://www.sdb.org/vocabulary/sdbstats#isAudiovisualCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro audiovisivo.
</p>
<p>
<i>Preferred label@en</i>: Audio-visual centre.
</p>
<p>
<i>Definizione@it</i>: centro per la elaborazione di audiovisivi.
</p>
<p>
<i>Definition@en</i>: audiovisual planning and production centre.
</p>
<p>
<i>Nota@it</i>: non solo per l'insegnamento, anche per la produzione.
</p>
<p>
<i>Note@en</i>: not just for teaching, also for production.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: personnel.
</p>
</li>
<li id="sec-3.2.3.3"><a name="3.2.3.3" />3.2.3.3 bookshop (libreria) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isBookshop">http://www.sdb.org/vocabulary/sdbstats#isBookshop</a>
</p>
<p>
<i>Etichetta preferita@it</i>: libreria.
</p>
<p>
<i>Preferred label@en</i>: bookshop.
</p>
<p>
<i>Definizione@it</i>: centro di diffusione della stampa e degli audiovisivi.
</p>
<p>
<i>Definition@en</i>: centre aimed at selling, spreading printed and multimedia materials.
</p>
<p>
<i>Nota@it</i>: 'audiovisivo' oggi è più ampio - multimedia.
</p>
<p>
<i>Note@en</i>: multimedia represents the area better than audiovisual.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: personnel.
</p>
</li>
<li id="sec-3.2.3.4"><a name="3.2.3.4" />3.2.3.4 data centre (centro elaborazione dati) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isDataCentre">http://www.sdb.org/vocabulary/sdbstats#isDataCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro elaborazione dati (ced).
</p>
<p>
<i>Etichetta alternativa@it</i>: centro informatico.
</p>
<p>
<i>Preferred label@en</i>: data centre.
</p>
<p>
<i>Alternative label@en</i>: computer centre.
</p>
<p>
<i>Definizione@it</i>: centro informatico per l'elaborazione e la trasmissione dei dati.
</p>
<p>
<i>Definition@en</i>: computer centre dealing mainly with collection and transmission of data.
</p>
<p>
<i>Nota@it</i>: relativamente nuovo come esperienza ma sarà in aumento con lo sviluppo del web semantico.
</p>
<p>
<i>Note@en</i>: a relatively new experience but will see an increase with the development of the semantic web.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Personnel.
</p>
</li>
<li id="sec-3.2.3.5"><a name="3.2.3.5" />3.2.3.5 radio (radio) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isRadio">http://www.sdb.org/vocabulary/sdbstats#isRadio</a>
</p>
<p>
<i>Etichetta preferita@it</i>: radio.
</p>
<p>
<i>Preferred label@en</i>: radio.
</p>
<p>
<i>Definizione@it</i>: radio trasmittenti.
</p>
<p>
<i>Definition@en</i>: radio broadcasting.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: personnel.
</p>
</li>
<li id="sec-3.2.3.6"><a name="3.2.3.6" />3.2.3.6 radio/tv (radio/tv) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isRadioTv">http://www.sdb.org/vocabulary/sdbstats#isRadioTv</a>
</p>
<p>
<i>Etichetta preferita@it</i>: radio/tv.
</p>
<p>
<i>Preferred label@en</i>: radio and tv.
</p>
<p>
<i>Definizione@it</i>: trasmittenti radio-TV.
</p>
<p>
<i>Definition@en</i>: radio and tv broadcasting.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: personnel.
</p>
</li>
<li id="sec-3.2.3.7"><a name="3.2.3.7" />3.2.3.7 print shop (tipografia) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPrintshop">http://www.sdb.org/vocabulary/sdbstats#isPrintshop</a>
</p>
<p>
<i>Etichetta preferita@it</i>: tipografia.
</p>
<p>
<i>Preferred label@en</i>: print shop.
</p>
<p>
<i>Definizione@it</i>: anche conosciuto come centro stampa, destinata specificamente all produzione.
</p>
<p>
<i>Definition@en</i>: may also be called a press, specifically geared to production.
</p>
<p>
<i>Nota@it</i>: a differenza dalle tipografie solo scolastiche.
</p>
<p>
<i>Note@en</i>: different, then, from school-based printing works.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: personnel.
</p>
</li>
<li id="sec-3.2.3.8"><a name="3.2.3.8" />3.2.3.8 publisher (editrice) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPublisher">http://www.sdb.org/vocabulary/sdbstats#isPublisher</a>
</p>
<p>
<i>Etichetta preferita@it</i>: editrice.
</p>
<p>
<i>Etichetta alternativa@it</i>: centro editoriale.
</p>
<p>
<i>Preferred label@en</i>: publishing house.
</p>
<p>
<i>Definizione@it</i>: produzione di libri, ma anche di sussidi multimediale.
</p>
<p>
<i>Definition@en</i>: production of books and multimedia.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: personnel.
</p>
</li>
</ul>
</div>
</div>
<div id="outline-container-3.2.4" class="outline-4">
<h4 id="sec-3.2.4">3.2.4 mission-oriented type </h4>
<div id="text-3.2.4">
<ul>
<li id="sec-3.2.4.1"><a name="3.2.4.1" />3.2.4.1 mission office (procura missionaria) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isMissionOffice">http://www.sdb.org/vocabulary/sdbstats#isMissionOffice</a>
</p>
<p>
<i>Etichetta preferita@it</i>: procura missionaria.
</p>
<p>
<i>Preferred label@en</i>: mission office.
</p>
<p>
<i>Alternative label@en</i>: mission and development office.
</p>
<p>
<i>Definizione@it</i>: centro per l'animazione a l'aiuto alle Missioni, ma soprattutto dal punto di vista economico.
</p>
<p>
<i>Definition@en</i>: centre which exists to help animate and provide other assistance to the Missions but especially by raising funds.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: province services; personnel.
</p>
</li>
<li id="sec-3.2.4.2"><a name="3.2.4.2" />3.2.4.2 mission residence (residenza missionaria) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isMissionResidence">http://www.sdb.org/vocabulary/sdbstats#isMissionResidence</a>
</p>
<p>
<i>Etichetta preferita@it</i>: residenza missionaria.
</p>
<p>
<i>Preferred label@en</i>: mission residence.
</p>
<p>
<i>Definizione@it</i>: comunità con stazioni di missione, non ancora costituita in 'parrocchia'.
</p>
<p>
<i>Definition@en</i>: a community with mission station(s) attached, not yet set up formally as a parish.
</p>
<p>
<i>Nota@it</i>: luogo caratteristico di prima presenza missionaria.
</p>
<p>
<i>Note@en</i>: typical of an early mission presence.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: canonically or non-canoncially erected House.
</p>
</li>
<li id="sec-3.2.4.3"><a name="3.2.4.3" />3.2.4.3 mission parish (parrocchia missionaria) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isMissionParish">http://www.sdb.org/vocabulary/sdbstats#isMissionParish</a>
<p>
<i>Etichetta preferita@it</i>: parrocchia missionaria.
</p>
<p>
<i>Preferred label@en</i>: mission parish.
</p>
<p>
<i>Definizione@it</i>: parrocchia nei luoghi di missione e spesso con
stazioni missionarie con attività di evangelizzazione. Di solito sono
affidate alla Congregazione con una Convenzione con il Vescovo
diocesano.
</p>
<p>
<i>Definition@en</i>: a parish in mission territory and often with
other mission stations attached, which carry out evangelization
activities. Usually these parishes are entrusted to the Congregation
via an Agreement with the Diocesan bishop.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, mission areas (not city parishes).
</p></li>
</ul>
</div>
</div>
<div id="outline-container-3.2.5" class="outline-4">
<h4 id="sec-3.2.5">3.2.5 Salesian Family-oriented type </h4>
<div id="text-3.2.5">
<ul>
<li id="sec-3.2.5.1"><a name="3.2.5.1" />3.2.5.1 cooperator centre (centro cooperatori) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isCooperatorCentre">http://www.sdb.org/vocabulary/sdbstats#isCooperatorCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro cooperatori.
</p>
<p>
<i>Preferred label@en</i>: Cooperator Centre.
</p>
<p>
<i>Definizione@it</i>: centri locali costituiti per Cooperatori (di promessa).
</p>
<p>
<i>Definition@en</i>: local centres made up of Cooperators who have made their promise.
</p>
<p>
<i>Nota@it</i>: bisogna indicare se sono centri costitutiti presso le case SDB o altro (FMA, all'esterno della Casa salesiana).
</p>
<p>
<i>Note@en</i>: there is a need to indicate whether these are centres
atached to an SDB community or otherwise (FMA or outside of a Salesian
setting altogether).
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Salesian Cooperator, SDB part-time or full-time.
</p>
</li>
<li id="sec-3.2.5.2"><a name="3.2.5.2" />3.2.5.2 past pupils group (unione exallievi) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPastPupilGroup">http://www.sdb.org/vocabulary/sdbstats#isPastPupilGroup</a>
</p>
<p>
<i>Etichettaf</i> preferita@it: unione exallievi.
</p>
<p>
<i>Preferred label@en</i>: Past Pupils group.
</p>
<p>
<i>Definizione@it</i>: unione costituita da exallievi associati.
</p>
<p>
<i>Definition@en</i> a union (group) made up of enrolled past pupils.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Past Pupil, SDB part-time or full-time.
</p>
</li>
</ul>
</div>
</div>
<div id="outline-container-3.2.6" class="outline-4">
<h4 id="sec-3.2.6">3.2.6 other type including province services (servizi ispettoriale, altro) </h4>
<div id="text-3.2.6">
<ul>
<li id="sec-3.2.6.1"><a name="3.2.6.1" />3.2.6.1 personal parish (parrocchia ad personam) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPersonalParish">http://www.sdb.org/vocabulary/sdbstats#isPersonalParish</a>
</p>
<p>
<i>Etichetta preferita@it</i>: parrocchia 'ad personam'.
</p>
<p>
<i>Preferred label@en</i>: personal parish.
</p>
<p>
<i>Definizione@it</i>: parrocchia non affidata alla Congregazione mediante Convenzione tra la Congregazione e la Diocesi ma per diversi motivi
temporaneamente animato da uno o più Salesiani.
</p>
<p>
<i>Definition@en</i>: a parish not entrusted to the Congregation by
agreement between the Salesians and the Diocese but for various reasons
temporarily assigned to the leadership of one or more Salesians.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries and personnel.
</p>
</li>
<li id="sec-3.2.6.2"><a name="3.2.6.2" />3.2.6.2 parish (parrocchia) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isParish">http://www.sdb.org/vocabulary/sdbstats#isParish</a>
</p>
<p>
<i>Etichetta preferita@it</i>: parrocchia.
</p>
<p>
<i>Preferred label@en</i>: parish.
</p>
<p>
<i>Definizione@it</i>: parrocchia affidata alla Congregazione mediante Convenzione tra la Congregazione e la Diocesi.
</p>
<p>
<i>Definition@en</i>: a parish entrusted to the Congregation by agreement between the Salesians and the Diocese.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.6.3"><a name="3.2.6.3" />3.2.6.3 shrine (santuario) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isShrine">http://www.sdb.org/vocabulary/sdbstats#isShrine</a>
</p>
<p>
<i>Etichetta preferita@it</i>: santuario.
</p>
<p>
<i>Etichetta alternativa@it</i>: basilica.
</p>
<p>
<i>Preferred label@en</i>: shrine.
</p>
<p>
<i>Alternative label@en</i>: basilica.
</p>
<p>
<i>Definizione@it</i>: chiesa riconosciuta come tale dalla autorità ecclesiastica e che è centro di accoglienza e di preghiera per molti fedeli.
</p>
<p>
<i>Definition@en</i>: church recognized as such by the Church authorities and which sees the arrival for prayer and worship of many faithful.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.6.4"><a name="3.2.6.4" />3.2.6.4 public church (chiesa publica) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPublicChurch">http://www.sdb.org/vocabulary/sdbstats#isPublicChurch</a>
</p>
<p>
<i>Etichetta preferita@it</i>: chiesa pubblica.
</p>
<p>
<i>Preferred label@en</i>: public church.
</p>
<p>
<i>Definizione@it</i>: chiesa che funziona con i principali servizi pastorali della parrocchia, ma non è riconosciuto come parrocchia.
</p>
<p>
<i>Definition@en</i>: a church that functions as if it were a parish (offers the same passtoral services) but is not officially classed as a parish.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.6.5"><a name="3.2.6.5" />3.2.6.5 special service (servizio speciale) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isSpecialService">http://www.sdb.org/vocabulary/sdbstats#isSpecialService</a>
</p>
<p>
<i>Etichetta preferita@it</i>: servizio speciale.
</p>
<p>
<i>Preferred label@en</i>: special service.
</p>
<p>
<i>Definizione@it</i>: servizi alla diocesi.
</p>
<p>
<i>Definition@en</i>: services rendered to the Diocese.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Diocesan works; Confrere.
</p>
</li>
<li id="sec-3.2.6.6"><a name="3.2.6.6" />3.2.6.6 migrant welfare (assistenza emigrati) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isMigrantWelfare">http://www.sdb.org/vocabulary/sdbstats#isMigrantWelfare</a>
</p>
<p>
<i>Etichetta preferita@it</i>: assistenza emigrati.
</p>
<p>
<i>Preferred label@en</i>: migrant welfare.
</p>
<p>
<i>Definizione@it</i>: assistenza religiosa e anche sociale a emigrati, profughi e altri in condizioni simili, con attenzione speciale ai giovani.
</p>
<p>
<i>Definition@en</i>: religious and social help for migrants, refugees, others in like circumstances, with special attention to young people.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.6.7"><a name="3.2.6.7" />3.2.6.7 leprosarium (lebbrosario) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isLeprosarium">http://www.sdb.org/vocabulary/sdbstats#isLeprosarium</a>
</p>
<p>
<i>Etichetta preferita@it</i>: lebbrosario.
</p>
<p>
<i>Preferred label@en</i>: leprosarium.
</p>
<p>
<i>Definizione@it</i>: opera di assistenza religiosa e sociale ai
lebbrosi, con attenzione privileggiata alla gioventù, secondo il
carisma di Don Bosco.
</p>
<p>
<i>Definition@en</i>: work of spiritual and social help for sufferers
of Hanson's disease, especially for young sufferers or children
thereof, according to Don Bosco's charism.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.6.8"><a name="3.2.6.8" />3.2.6.8 clinic (dispensario) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isClinic">http://www.sdb.org/vocabulary/sdbstats#isClinic</a>
</p>
<p>
<i>Etichetta preferita@it</i>: dispensario.
</p>
<p>
<i>Preferred label@en</i>: clinic.
</p>
<p>
<i>Definizione@it</i>: opera di cura della salute.
</p>
<p>
<i>Definition@en</i>: a work involved in health care.
</p>
<p>
<i>Nota@it</i>: spesso legata alle opere missionarie.
</p>
<p>
<i>Note@en</i>: often tied to missions.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.6.9"><a name="3.2.6.9" />3.2.6.9 social advancement (promozione sociale) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isSocialAdvancement">http://www.sdb.org/vocabulary/sdbstats#isSocialAdvancement</a>
</p>
<p>
<i>Etichetta preferita@it</i>: promozione sociale.
</p>
<p>
<i>Preferred label@en</i>: social advancement.
</p>
<p>
<i>Definizione@it</i>: si tratta di attività di promozione sociale organizzate in centri di aiuto.
</p>
<p>
<i>Definition@en</i>: promotional activities organized from centres.
</p>
<p>
<i>Nota@it</i>: non sono le sole attività sociali usuali in ogni parrocchia od oratorio.
</p>
<p>
<i>Note@en</i>: not just the usual social activities organized by parishes or oratories.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.6.10"><a name="3.2.6.10" />3.2.6.10 rest home (casa riposo o di cura) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isRestHome">http://www.sdb.org/vocabulary/sdbstats#isRestHome</a>
</p>
<p>
<i>Etichetta preferita@it</i>: casa riposo.
</p>
<p>
<i>Etichetta alternativa@it</i>: casa di cura.
</p>
<p>
<i>Preferred label@en</i>: rest home.
</p>
<p>
<i>Definizione@it</i>: una casa destinata soprattutto a confratelli malati e/o anziani bisognosi di particolare cura.
</p>
<p>
<i>Definition@en</i>: a home for sick confreres or elderly confreres who needs special care.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.6.11"><a name="3.2.6.11" />3.2.6.11 spirituality centre (centro spiritualità) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isSpiritualityCentre">http://www.sdb.org/vocabulary/sdbstats#isSpiritualityCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro di spiritualità.
</p>
<p>
<i>Preferred label@en</i>: spirituality centre.
</p>
<p>
<i>Definizione@it</i>: una casa per la propulsione della spiritualità giovanile salesiana.
</p>
<p>
<i>Definition@en</i>: a house aimed at developing Salesian youth spirituality.
</p>
<p>
<i>Nota@it</i>: si intendono le varie case per incontri, ritiri, esercizi spirituali ecc.
</p>
<p>
<i>Note@en</i>: meaning houses whose main activity is youth gatherings, retreats, days of recollection etc.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: beneficiaries, personnel.
</p>
</li>
<li id="sec-3.2.6.12"><a name="3.2.6.12" />3.2.6.12 youth ministry centre (centro pastorale giovanile) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isYouthMinistryCentre">http://www.sdb.org/vocabulary/sdbstats#isYouthMinistryCentre</a>
<p>
<i>Etichetta preferita@it</i>: centro di pastorale giovanile.
</p>
<p>
<i>Preferred label@en</i>: youth ministry centre.
</p>
<p>
<i>Definizione@it</i>: centro per il coordinamento e l'animazione della pastorale giovanile nell'Ispettoria o al livello nazionale.
</p>
<p>
<i>Definition@en</i>: a centre for coordination and animation of youth ministry in province or nationally.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: personnel.
</p></li>
</ul>
</div>
</div>
<div id="outline-container-3.2.7" class="outline-4">
<h4 id="sec-3.2.7">3.2.7 Types </h4>
<div id="text-3.2.7">
<ul>
<li id="sec-3.2.7.1"><a name="3.2.7.1" />3.2.7.1 formation type (formazione) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isFormationType">http://www.sdb.org/vocabulary/sdbstats#isFormationType</a>
<p>
<i>Etichetta preferita@it</i>: formazione dei salesiani.
</p>
<p>
<i>Preferred label@en</i>: Salesian formation.
</p>
<p>
<i>Definizione@it</i>: la formazione dei salesiani dal primo ingresso
nella Società (Noviziato) fino all piena maturazione della vocazione
nella missione salesiana.
</p>
<p>
<i>Definition@en</i>: formation of the Salesian from his first entry
into the Society (Novitiate) until reaching full maturity in his
vocation in the Salesian mission.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: novitiate, Salesian postnovitiate, non-Salesian
postnovitiate, Salesian theologate, non-Salesian theologate, ongoing
formation centre.
</p></li>
<li id="sec-3.2.7.2"><a name="3.2.7.2" />3.2.7.2 oratory-youth centre type (oratorio-centro giovanile) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isOratoryYouthCentreType">http://www.sdb.org/vocabulary/sdbstats#isOratoryYouthCentreType</a>
<p>
<i>Etichetta preferita@it</i>: oratori-centri giovanili.
</p>
<p>
<i>Preferred label@en</i>: oratories-youth centres.
</p>
<p>
<i>Definizione@it</i>: opere e attività privilegiate che fanno parte
della tradizione salesiana, attingendo al primo Oratorio di Valdocco.
Si rivolgono ai ragazzi e ai giovani, raccogliendoli in un ambiente e
organizzando il loro tempo libero in vista della loro formazione ai
valori umani e cristiani.
</p>
<p>
<i>Definition@en</i>: privileged activities and works which are part of
the Salesian tradition, drawing from the first Oratory in Valdocco.
They exist for youngsters and older youth, bringing them together in a
particular setting and organizing their leisure time in view of their
formation to human and Christian values.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: festive oratory, daily oratory, youth centre, oratory-youth centre.
</p></li>
<li id="sec-3.2.7.3"><a name="3.2.7.3" />3.2.7.3 school type (scuola) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isSchoolType">http://www.sdb.org/vocabulary/sdbstats#isSchoolType</a>
<p>
<i>Etichetta preferita@it</i>: scuole.
</p>
<p>
<i>Preferred label@en</i>: schools.
</p>
<p>
<i>Definizione@it</i>: la scuola rappresenta forse il più consistente
fronte educativo nella maggioranza delle Ispettorie della Congregazione
Salesiana.
</p>
<p>
<i>Definition@en</i>: the school is perhaps the most consistent educational front in the majority of the Provinces of the Salesian Congregation.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: preschool, primary (elementary) school, lower secondary
school (media or di primo grado), upper secondary school (high school
or di secondo grado), secondary technical school, college or university
level, mission school (often informal education), basic literacy school
(often informal education).
</p></li>
<li id="sec-3.2.7.4"><a name="3.2.7.4" />3.2.7.4 scholastic institute type (istituto scolastico) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isScholasticInstituteType">http://www.sdb.org/vocabulary/sdbstats#isScholasticInstituteType</a>
<p>
<i>Etichetta preferita@it</i>: istituti scolastici.
</p>
<p>
<i>Preferred label@en</i>: scholastic institutions.
</p>
<p>
<i>Definizione@it</i>: può comprendere più tipi di scuola di vario
ordine e grado. Normalmente non si conteggia tra questi le scuole
missionarie o di alfabetizzazione.
</p>
<p>
<i>Definition@en</i>: can comprise a range of school types and levels.
The mission and basic literacy schools are normally not counted into
this overall scholastic type.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: preschool, primary (elementary) school, lower secondary
school (media or di primo grado), upper secondary school (high school
or di secondo grado), secondary technical school, college or university
level.
</p></li>
<li id="sec-3.2.7.5"><a name="3.2.7.5" />3.2.7.5 professional and agricultural school type (scuola professionale) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isProfessionalType">http://www.sdb.org/vocabulary/sdbstats#isProfessionalType</a>
<p>
<i>Etichetta preferita@it</i>: scuole professionali e agricole.
</p>
<p>
<i>Preferred label@en</i>: agricultural and professional schools.
</p>
<p>
<i>Definizione@it</i>: scuole o centri di formazione e di avvio al lavoro, e scuole agricole, che preprano ragazzi e giovani per l'agricola.
</p>
<p>
<i>Definition@en</i>: trade schools or centres, and schools which teach agriculture.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: trade school, agricultural school, adult education courses.
</p></li>
<li id="sec-3.2.7.6"><a name="3.2.7.6" />3.2.7.6 hostel type (convitto) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isHostelType">http://www.sdb.org/vocabulary/sdbstats#isHostelType</a>
<p>
<i>Etichetta preferita@it</i>: convitti e pensionati.
</p>
<p>
<i>Preferred label@en</i>: hostels and boarding.
</p>
<p>
<i>Definizione@it</i>: strutture che alloggiano i giovani in un
ambiente educativo, per aiutarli nella loro formazione, spesso
attraverso la frequenza di una scuola all'interno della casa salesiana
o anche all'esterno di essa.
</p>
<p>
<i>Definition@en</i>: structures set up to bring young people into an
educational setting in order to help them with their educaiton. They
often have a school attached and as part of the Salesian community and
its work, or students attend a school outside.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: hostel, lower secondary boarding (media), upper secondary boarding (superiore), university hostel, young workers hostel.
</p></li>
<li id="sec-3.2.7.7"><a name="3.2.7.7" />3.2.7.7 vocational guidance type (orientamento vocazionale) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isVocationType">http://www.sdb.org/vocabulary/sdbstats#isVocationType</a>
<p>
<i>Etichetta preferita@it</i>: opere di orientamento vocazionale.
</p>
<p>
<i>Preferred label@en</i>: vocational guidance works.
</p>
<p>
<i>Definizione@it</i>: attività o opere specificamente dedicate alla
promozione e alla cura delle vocazioni alla vita religiosa salesiana e
al sacerdozio.
</p>
<p>
<i>Definition@en</i>: activities or works specifically aimed at furthering and caring for vocations to Salesian religious life and to priesthood.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: preaspirantate (vocational guidance centre), aspirantate, live-in community, prenovitiate, diocesan seminary.
</p></li>
<li id="sec-3.2.7.8"><a name="3.2.7.8" />3.2.7.8 parishes and missions type (parrocchia e missione) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isParishType">http://www.sdb.org/vocabulary/sdbstats#isParishType</a>
<p>
<i>Etichetta preferita@it</i>: parrocchie e missioni.
</p>
<p>
<i>Preferred label@en</i>: parishes and missions.
</p>
<p>
<i>Definizione@it</i>: parrocchie affidata alla Congregazione mediante
Convenzione tra la Congregazione e la Diocesi e parrocchie tipicamente
missionarie che spesso comprendono svariate attività di
evangelizzazione, oltre alla cura della comunità cristiana esistente.
</p>
<p>
<i>Definition@en</i>: parishes entrusted to the Congregation via an
agreement between the Congregation and a Diocese, and typically mission
style parishes which often involve evangelization activity beyond the
normal scope of caring for the Catholic community which is part of the
parish.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: parish, mission parish, mission residence, personal parish, public church, sanctuary or basilica.
</p></li>
<li id="sec-3.2.7.9"><a name="3.2.7.9" />3.2.7.9 social advancement type (promozione sociale) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isSocialAdvancementType">http://www.sdb.org/vocabulary/sdbstats#isSocialAdvancementType</a>
<p>
<i>Etichetta preferita@it</i>: opere di promozione sociale.
</p>
<p>
<i>Preferred label@en</i>: social advancement works.
</p>
<p>
<i>Definizione@it</i>: attività e opere che vengono in genere indicate
come opere di promozione sociale, alcune delle quali rientrano
spceificamente nell'area educativa giovanile, mentre altre sono
attività presenti nelle Ispettorie, che spesso accompagnano e
completano altre opere.
</p>
<p>
<i>Definition@en</i>: activities and works which are generally
described as for social advancement, some of which are specifically
involved in education of the young, while others are activities in a
province which accompany or complete other activities.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: work for youth at risk, migrant assistance, leprosarium, clinic, other kinds of social advancement centre.
</p></li>
<li id="sec-3.2.7.10"><a name="3.2.7.10" />3.2.7.10 social communication type (comunicazione sociale) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isSocialCommunicationType">http://www.sdb.org/vocabulary/sdbstats#isSocialCommunicationType</a>
<p>
<i>Etichetta preferita@it</i>: comunicazione sociale.
</p>
<p>
<i>Preferred label@en</i>: social communication.
</p>
<p>
<i>Definizione@it</i>: attività e opere specifiche nel campo della comunicazione sociale.
</p>
<p>
<i>Definition@en</i>: specific activities and works in the social communications field.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: province communication centre, publishing house, print
shop, audio-visual centre, bookshop, data and/or computer centre,
radio, radio and TV.
</p></li>
<li id="sec-3.2.7.11"><a name="3.2.7.11" />3.2.7.11 provincial services type (servizi ispettoriali) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isProvinceServiceType">http://www.sdb.org/vocabulary/sdbstats#isProvinceServiceType</a>
<p>
<i>Etichetta preferita@it</i>: servizi ispettoriali.
</p>
<p>
<i>Preferred label@en</i>: provincial services.
</p>
<p>
<i>Definizione@it</i>: tipici servizi di animazione che le Ispettorie
organizzano a raggio ispettoriale per l'utilità dei giovani delle
diverse comunità. Ci sono anche alcuni servizi organizzati dalle case
ma che hanno un raggio più ampio di quello locale. Infine ci sono
servizi in favore degli stessi confratelli, sempre a livello
ispettoriale o interispettoriale.
</p>
<p>
<i>Definition@en</i>: typical leadership or animation services which
Provinces organize at the level of the Province and which are used by
youngsters from the Houses. There are also some services organized by
the Houses but with broader impact thatn just a local one. And finally
there are services for the confreres themselves, of a province or
interprovince kind.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: catechetical centre, youth ministry centre, spirituality
centre, rest home for SDB, mission (and development) offices, leisure
centres (such as camps).
</p></li>
<li id="sec-3.2.7.12"><a name="3.2.7.12" />3.2.7.12 group (SF) type (gruppo FS) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isSalesianFamilyType">http://www.sdb.org/vocabulary/sdbstats#isSalesianFamilyType</a>
<p>
<i>Etichetta preferita@it</i>: alcuni gruppi della FS.
</p>
<p>
<i>Preferred label@en</i>: some SF groups.
</p>
<p>
<i>Definizione@it</i>: attività in connessione con la responsabilità di
animazione affidata dalle Costituzioni ai Salesiani, per alcuni gruppi
della Famiglia Salesiana.
</p>
<p>
<i>Definition@en</i>: activities connected with the responsibility entrusted by the Constitutions, for animating certain Salesian Family groups.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Cooperators, Past Pupils mainly, but there could be
others especially as SF Groups begin to work more in collaboration with
the Salesian life and mission for which the Congregation is
responsible.
</p></li>
</ul>
</div>
</div>
<div id="outline-container-3.2.8" class="outline-4">
<h4 id="sec-3.2.8">3.2.8 total personnel (totale personale) </h4>
<div id="text-3.2.8">
<ul>
<li id="sec-3.2.8.1"><a name="3.2.8.1" />3.2.8.1 has total SDB full-time (SDB a pieno tempo) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasTotalSdbFullTime">http://www.sdb.org/vocabulary/sdbstats#hasTotalSdbFullTime</a>
<p>
<i>Etichetta preferita@it</i>: sdb a pieno tempo.
</p>
<p>
<i>Preferred label@en</i>: sdb full-time.
</p>
<p>
<i>Definizione@it</i>: il numero di sdb incaricati principalmente in questo settore o lavoro, anche se fanno altre cose
</p>
<p>
<i>Definition@en</i>: the number of sdbs whose principal assignment is in this sector or work, even if they also do other things.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Confrere.
</p></li>
<li id="sec-3.2.8.2"><a name="3.2.8.2" />3.2.8.2 has total SDB part-time (SDB a tempo parziale) <br />
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasTotalSdbPartTime">http://www.sdb.org/vocabulary/sdbstats#hasTotalSdbPartTime</a>
<p>
<i>Etichetta preferita@it</i>: sdb a tempo parziale.
</p>
<p>
<i>Preferred label@en</i>: sdb part-time.
</p>
<p>
<i>Definizione@it</i>: il numero di sdb che lavorano in questo settore o hanno questo incarico a tempo parziale. E' possibile che lavorano, sempre a tempo parziale, in altri settori o con altri incarichi
</p>
<p>
<i>Definition@en</i>: sdb involved part time.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Confrere.
</p>
</li>
<li id="sec-3.2.8.3"><a name="3.2.8.3" />3.2.8.3 has total Salesian Family member (famiglia salesiana) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasTotalMemberSalesianFamily">http://www.sdb.org/vocabulary/sdbstats#hasTotalMemberSalesianFamily</a>
</p>
<p>
<i>Etichetta preferita@it</i>: totale membri della Famiglia Salesiana.
</p>
<p>
<i>Preferred label@en</i>: total Salesian Family members.
</p>
<p>
<i>Definizione@it</i>: persone che sono membri di un Gruppo ufficialmente riconosciuto della FS.
</p>
<p>
<i>Definition@en</i>: people who are members of an officially recognized SF Group.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Groups as listed in <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.SalesianFamily">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.SalesianFamily</a>
</p>
</li>
<li id="sec-3.2.8.4"><a name="3.2.8.4" />3.2.8.4 has total other religious (religioso) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasTotalOtherReligious">http://www.sdb.org/vocabulary/sdbstats#hasTotalOtherReligious</a>
</p>
<p>
<i>Etichetta preferita@it</i>: totale altri religiosi.
</p>
<p>
<i>Preferred label@en</i>: total other religious.
</p>
<p>
<i>Definizione@it</i>: membro di istituto religioso o consecrato oltre che Gruppo della FS.
</p>
<p>
<i>Definition@en</i>: member of Religious Institute or consecrated person, other than SF Group.
</p>
<p>
<i>Nota@it</i>: 'religioso' potrebbe'essere 'consecrato' anche se non 'religioso'.
</p>
<p>
<i>Note@en</i>: in this instance could be a consecrated person who is not a religious.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: member of religious institute or group other than the Salesians.
</p>
</li>
<li id="sec-3.2.8.5"><a name="3.2.8.5" />3.2.8.5 has total lay person (laico) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasTotalLayPerson">http://www.sdb.org/vocabulary/sdbstats#hasTotalLayPerson</a>
</p>
<p>
<i>Etichetta preferita@it</i>: laico
</p>
<p>
<i>Preferred label@en</i>: lay person.
</p>
<p>
<i>Definizione@it</i>: nel senso generico del cristiano (o
non-cristiano) che non fa parte della gerarchia ecclesiastica né della
vita consecrata o religiosa.
</p>
<p>
<i>Definition@en</i>: generically understood as a person who may be
Catholic or Christian or even non-Christian and is not part of the
Church's hierarchy or charismatic structure (religious, consecrated).
</p>
<p>
<i>Nota@it</i>: normalmente in riferimento alle persone impegate in un'opera salesiana.
</p>
<p>
<i>Note@en</i>: normally used in reference to someone employed in a Salesian Work.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: any person who is not a member of a religious institute, clergy or consecrated life.
</p>
</li>
</ul>
</div>
</div>
<div id="outline-container-3.2.9" class="outline-4">
<h4 id="sec-3.2.9">3.2.9 total beneficiary (totale destinatari) </h4>
<div id="text-3.2.9">
<ul>
<li id="sec-3.2.9.1"><a name="3.2.9.1" />3.2.9.1 has total beneficiary (destinatario) <br />
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasTotalBeneficiary">http://www.sdb.org/vocabulary/sdbstats#hasTotalBeneficiary</a>
</p>
<p>
<i>Etichetta preferita@it</i>: totale destinatari.
</p>
<p>
<i>Preferred label@en</i>: total no. beneficiaries.
</p>
<p>
<i>Alternative label@en</i>: total no. pupils.
</p>
<p>
<i>Alternative label@en</i>: total no. faithful.
</p>
<p>
<i>Definizione@it</i>: il gruppo (o il singolo) 'target'.
</p>
<p>
<i>Definition@en</i>: target group or individual.
</p>
<p>
<i>Domain</i>: The class known as Sector.
</p>
<p>
<i>Range</i>: Salesian works, activities, services.
</p>
</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-3.3" class="outline-3">
<h3 id="sec-3.3">3.3 Properties whose domain is the class of SALESIAN FAMILY </h3>
<div id="text-3.3">
</div>
<div id="outline-container-3.3.1" class="outline-4">
<h4 id="sec-3.3.1">3.3.1 cooperator centre (centro cooperatori) </h4>
<div id="text-3.3.1">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isCooperatorCentre">http://www.sdb.org/vocabulary/sdbstats#isCooperatorCentre</a>
</p>
<p>
<i>Etichetta preferita@it</i>: centro cooperatori.
</p>
<p>
<i>Preferred label@en</i>: Cooperator Centre.
</p>
<p>
<i>Definizione@it</i>: centri locali costituiti per Cooperatori (di promessa).
</p>
<p>
<i>Definition@en</i>: local centres made up of Cooperators who have made their promise.
</p>
<p>
<i>Nota@it</i>: bisogna indicare se sono centri costitutiti presso le case SDB o altro (FMA, all'esterno della Casa salesiana).
</p>
<p>
<i>Note@en</i>: there is a need to indicate whether these are centres
atached to an SDB community or otherwise (FMA or outside of a Salesian
setting altogether).
</p>
<p>
<i>Domain</i>: The class known as Salesian Family.
</p>
<p>
<i>Range</i>: Salesian Cooperator, SDB part-time or full-time.
</p>
</div>
</div>
<div id="outline-container-3.3.2" class="outline-4">
<h4 id="sec-3.3.2">3.3.2 past pupils group (unione exallievi) </h4>
<div id="text-3.3.2">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isPastPupilGroup">http://www.sdb.org/vocabulary/sdbstats#isPastPupilGroup</a>
</p>
<p>
<i>Etichettaf</i> preferita@it: unione exallievi.
</p>
<p>
<i>Preferred label@en</i>: Past Pupils group.
</p>
<p>
<i>Definizione@it</i>: unione costituita da exallievi associati.
</p>
<p>
<i>Definition@en</i> a union (group) made up of enrolled past pupils.
</p>
<p>
<i>Domain</i>: The class known as Salesian Family.
</p>
<p>
<i>Range</i>: Past Pupil, SDB part-time or full-time.
</p>
</div>
</div>
</div>
<div id="outline-container-3.4" class="outline-3">
<h3 id="sec-3.4">3.4 Properties whose domain is the class of HOUSE </h3>
<div id="text-3.4">
</div>
<div id="outline-container-3.4.1" class="outline-4">
<h4 id="sec-3.4.1">3.4.1 canonically erected (eretta) </h4>
<div id="text-3.4.1">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isCanonicallyErected">http://www.sdb.org/vocabulary/sdbstats#isCanonicallyErected</a>
</p>
<p>
<i>Etichetta preferita@it</i>: eretta.
</p>
<p>
<i>Preferred label@en</i>: canonically erected.
</p>
<p>
<i>Definizione@it</i>: atto ufficiale (decreto) dell'autorità competente, che stabilisce una circoscrizione, una casa religiosa, una parrocchia….
</p>
<p>
<i>Definition@en</i>: an official act (decree) by which the competenet authority establishes a circumscription, religious house, parish etc.
</p>
<p>
<i>Nota@it</i>: in questo caso si applica alla casa religiosa.
</p>
<p>
<i>Note@en</i>: in this case it applies to the religious house.
</p>
<p>
<i>Domain</i>: The class known as House.
</p>
<p>
<i>Range</i>: ecclesiastical organizational unit.
</p>
</div>
</div>
<div id="outline-container-3.4.2" class="outline-4">
<h4 id="sec-3.4.2">3.4.2 not canonically erected (presenza non eretta) </h4>
<div id="text-3.4.2">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isNotCanonicallyErected">http://www.sdb.org/vocabulary/sdbstats#isNotCanonicallyErected</a>
</p>
<p>
<i>Etichetta preferita@it</i>: presenza non eretta.
</p>
<p>
<i>Preferred label@en</i>: not canonically erected.
</p>
<p>
<i>Definizione@it</i>: presenza con responsabile.
</p>
<p>
<i>Definition@en</i>: a simple presence with a person (priest) in charge.
</p>
<p>
<i>Domain</i>: The class known as House.
</p>
<p>
<i>Range</i>: a wide range of possibilities for such a 'presence'. Possibly too wide!
</p>
</div>
</div>
</div>
<div id="outline-container-3.5" class="outline-3">
<h3 id="sec-3.5">3.5 Properties whose domain is the class of REGION </h3>
<div id="text-3.5">
</div>
<div id="outline-container-3.5.1" class="outline-4">
<h4 id="sec-3.5.1">3.5.1 region classification (classificazione regioni) </h4>
<div id="text-3.5.1">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#isRegionClassification">http://www.sdb.org/vocabulary/sdbstats#isRegionClassification</a>
</p>
<p>
<i>Etichetta preferita@it</i>: classificazione regioni.
</p>
<p>
<i>Preferred label@en</i>: region classification.
</p>
<p>
<i>Definizione@it</i>: regioni come definite nel Salesian Termbase <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Region">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Region</a>
</p>
<p>
<i>Definition@en</i>: regions as defined in Salesian Termbase <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Region">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.Region</a>
</p>
<p>
<i>Nota@it</i>: l'elenco attuale in italiano di queste regioni.
</p>
<p>
<i>Note@en</i>: the current list of regions.
</p>
<p>
<i>Domain</i>: The class known as Region.
</p>
<p>
<i>Range</i>: a restricted list, currently listed in English as: East
Asia-Oceania, Africa-Madagascar, Interamerica, North Europe, West
Europe, Italy Middle East, America South Cone, South Asia.
</p>
</div>
</div>
</div>
<div id="outline-container-3.6" class="outline-3">
<h3 id="sec-3.6">3.6 Properties whose domain is the class of CIRCUMSCRIPTION </h3>
<div id="text-3.6">
</div>
<div id="outline-container-3.6.1" class="outline-4">
<h4 id="sec-3.6.1">3.6.1 official name (titolo ufficiale) </h4>
<div id="text-3.6.1">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#hasOfficialName">http://www.sdb.org/vocabulary/sdbstats#hasOfficialName</a>
</p>
<p>
<i>Etichetta preferita@it</i>: titolo ufficiale.
</p>
<p>
<i>Preferred label@en</i>: official name.
</p>
<p>
<i>Definizione@it</i>: ciascuna Circoscrizione ha il suo titolo proprio.
</p>
<p>
<i>Definition@en</i>: each Circumscription has its official name or title.
</p>
<p>
<i>Nota@it</i>: nominato per un titole della Virgine, un Santo o Beato, non necessariamente salesiano.
</p>
<p>
<i>Note@en</i>: named after one of Our Lady's titles, or a Saint or Blessed, not necessarily Salesian.
</p>
<p>
<i>Domain</i>: The class known as Circumscription.
</p>
<p>
<i>Range</i>: each of the Provinces identifiable by its code (e.g. AET Maria Kidane Meheret or Our Lady of Mercy).
</p>
</div>
</div>
<div id="outline-container-3.6.2" class="outline-4">
<h4 id="sec-3.6.2">3.6.2 date founded (data della fondazione) </h4>
<div id="text-3.6.2">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#wasFoundedOn">http://www.sdb.org/vocabulary/sdbstats#wasFoundedOn</a>
</p>
<p>
<i>Etichetta preferita@it</i>: data della fondazione.
</p>
<p>
<i>Preferred label@en</i>: date founded.
</p>
<p>
<i>Definizione@it</i>: la data della fondazione ufficiale (decreto di erezione canonica).
</p>
<p>
<i>Definition@en</i>: date formally founded (decree of canoncial erection).
</p>
<p>
<i>Nota@it</i>: si riferisce alla data della fondazione di una circoscrizione.
</p>
<p>
<i>Note@en</i>: this is in reference to the erection of a province, vice province etc.
</p>
<p>
<i>Domain</i>: The class known as Circumscription.
</p>
<p>
<i>Range</i>: any appropriate datetype.
</p>
</div>
</div>
<div id="outline-container-3.6.3" class="outline-4">
<h4 id="sec-3.6.3">3.6.3 date refounded (data della rifondazione) </h4>
<div id="text-3.6.3">
<p>
<i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#wasRefoundedOn">http://www.sdb.org/vocabulary/sdbstats#wasRefoundedOn</a>
</p>
<p>
<i>Etichetta preferita@it</i>: data della rifondazione.
</p>
<p>
<i>Preferred label@en</i>: date refounded.
</p>
<p>
<i>Definizione@it</i>: la data della rifondazione ufficiale.
</p>
<p>
<i>Definition@en</i>: date formally refounded.
</p>
<p>
<i>Nota@it</i>: succede quando per motivi gravi (guerra, altro) la Circoscrizione era interrotta.
</p>
<p>
<i>Note@en</i>: occurs when for some grave cause (war or other) the Circumscription was interrupted.
</p>
<p>
<i>Domain</i>: The class known as Circumscription.
</p>
<p>
<i>Range</i>: any appropriate datetype.
</p>
</div>
</div>
</div>
<div id="outline-container-3.7" class="outline-3">
<h3 id="sec-3.7">3.7 Properties whose domain is the class of PLACE </h3>
<div id="text-3.7">
</div>
<div id="outline-container-3.7.1" class="outline-4">
<h4 id="sec-3.7.1">3.7.1 continent </h4>
<div id="text-3.7.1">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#continent">http://www.sdb.org/vocabulary/sdbstats#continent</a>
</p>
<p>
<i>Etichetta preferita@it</i>: continente.
</p>
<p>
<i>Preferred label@en</i>: continent.
</p>
<p>
<i>Definizione@it</i>: uno dei continenti elencati normalmente nei <i>dati statistici</i> salesiani (sdb).
</p>
<p>
<i>Definition@en</i>: any one of the continents as usually listed in Salesian SDB <i>dati statistici</i>.
</p>
<p>
<i>Nota@it</i>: potrebbe funzionare per indicare il numero di continenti coinvolti, p.e. 5.
</p>
<p>
<i>Note@en</i>: may be used in data tables to indicate the number of continents involved, e.g. 5.
</p>
<p>
<i>Domain</i>: The class known as Place.
</p>
<p>
<i>Range</i>: five continents recognized in the <i>dati statistici</i>: Africa, America, Asia, Europe, Oceania.
</p>
</div>
</div>
<div id="outline-container-3.7.2" class="outline-4">
<h4 id="sec-3.7.2">3.7.2 nation </h4>
<div id="text-3.7.2">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#nation">http://www.sdb.org/vocabulary/sdbstats#nation</a>
</p>
<p>
<i>Etichetta preferita@it</i>: nazione.
</p>
<p>
<i>Preferred label@en</i>: nation.
</p>
<p>
<i>Alternative label@en</i>: country.
</p>
<p>
<i>Definizione@it</i>: uno delle nazioni elencate nei <i>dati statistici</i> salesiani (sdb).
</p>
<p>
<i>Definition@en</i>: any one of the nations listed in Salesian SDB <i>dati statistici</i>.
</p>
<p>
<i>Nota@it</i>: funziona normalmente per indicare il numero delle nazioni coinvolte.
</p>
<p>
<i>Note@en</i>: may be used in data tables to indicate the number of nations involved.
</p>
<p>
<i>Domain</i>: The class known as Place.
</p>
<p>
<i>Range</i>: nations or countries in the <i>dati statistici</i> where Salesians or Salesian activity is to be found.
</p>
</div>
</div>
<div id="outline-container-3.7.3" class="outline-4">
<h4 id="sec-3.7.3">3.7.3 province </h4>
<div id="text-3.7.3">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#province">http://www.sdb.org/vocabulary/sdbstats#province</a>
</p>
<p>
<i>Etichetta preferita@it</i>: ispettoria.
</p>
<p>
<i>Preferred label@en</i>: province.
</p>
<p>
<i>Definizione@it</i>: nel senso comune del discorso salesiano, una
circoscrizione, cioè può essere ispettoria, visitatorio, delegazione,
circoscrizione speciale.
</p>
<p>
<i>Definition@en</i>: in common Salesian discourse, a circumscription,
where no distinction is made between province, vice-province,
delegation, special circumscription.
</p>
<p>
<i>Nota@it</i>: funziona normalmente per indicare il numero delle circoscrizioni coinvolte.
</p>
<p>
<i>Note@en</i>: used normally in data tables to indicate the number of circumscriptions (provinces) involved.
</p>
<p>
<i>Domain</i>: The class known as Place.
</p>
<p>
<i>Range</i>: the group of recognized 'provinces' (provinces, vice provinces, delegations, special circumsciptions) listed in the <i>Dati statistici</i> or <i>Annuario</i>.
</p>
</div>
</div>
<div id="outline-container-3.7.4" class="outline-4">
<h4 id="sec-3.7.4">3.7.4 canonical community </h4>
<div id="text-3.7.4">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#canonicalCommunity">http://www.sdb.org/vocabulary/sdbstats#canonicalCommunity</a>
</p>
<p>
<i>Etichetta preferita@it</i>: casa eretta.
</p>
<p>
<i>Preferred label@en</i>: canonical community.
</p>
<p>
<i>Alternative label@en</i>: house.
</p>
<p>
<i>Definizione@it</i>: in riferimento ad una residenza religiosa (con comunità) formalmente (canonicamente) eretta.
</p>
<p>
<i>Definition@en</i>: in reference to a religious residence (with a community) which is formally (canoncially) erected.
</p>
<p>
<i>Nota@it</i>: funziona normalmente per indicare il numero di tali case coinvolte.
</p>
<p>
<i>Note@en</i>: may be used in data tables to indicate the number of such houses involved.
</p>
<p>
<i>Domain</i>: The class known as Place.
</p>
<p>
<i>Range</i>: houses or communities with a Rector (as distinct from a person in charge) as listed in the <i>Dati statistici</i> or <i>Annuario</i>.
</p>
</div>
</div>
<div id="outline-container-3.7.5" class="outline-4">
<h4 id="sec-3.7.5">3.7.5 presence </h4>
<div id="text-3.7.5">
<p><i>URI</i>: <a href="http://www.sdb.org/vocabulary/sdbstats#presence">http://www.sdb.org/vocabulary/sdbstats#presence</a>
</p>
<p>
<i>Etichetta preferita@it</i>: presenza.
</p>
<p>
<i>Preferred label@en</i>: presence.
</p>
<p>
<i>Alternative label@en</i>: non-canonical presence.
</p>
<p>
<i>Definizione@it</i>: in riferimento ad una residenza religiosa non eretta.
</p>
<p>
<i>Definition@en</i>: in reference to a religious residence which is not canonically erected.
</p>
<p>
<i>Nota@it</i>: funziona normalmente per indicare il numero di tali presenze coinvolte.
</p>
<p>
<i>Note@en</i>: may be used in data tables to indicate the number of such presences involved.
</p>
<p>
<i>Domain</i>: The class known as Place.
</p>
<p>
<i>Range</i>: houses or communities with a person in charge (as distinct from a Rector) as listed in the <i>Dati statistici</i> or <i>Annuario</i> or at least in the province's listing of such houses.
</p></div>
</div>
</div>
</div>
<div id="outline-container-4" class="outline-2">
<h2 id="sec-4">4 Display properties </h2>
<div id="text-4">
<p>Esiste un piccolo gruppo di proprietà utili per visualizzare i dati,
come segue. Queste proprietà e le loro classi corrispondenti
appartengono al vocabolario 'salesian' che si trova a <a href="http://www.sdb.org/vocabulary/salesian#">http://www.sdb.org/vocabulary/salesian#</a>.
Le classi più utili sono Contact Point e Postal Address con le loro
proprietà come address, box number, post code, telephone, type of
contact ecc.
</p>
<p>There is a small group of properties used especially for data
display, as follows. They and their classes are borrowed from the
'salesian' vocabulary to be found at <a href="http://www.sdb.org/vocabulary/salesian#">http://www.sdb.org/vocabulary/salesian#</a>
and include especially properties of Contact Point and Postal Address
classes with their respective properties (address, box number, post
code, telephone etc., type of contact ….).
</p>
<p>
Altre classi utili sono Code, Country, Event:
Others classes such as Code, Country and Event may be useful:
</p>
<p>
The property whose domain is the class of CODE, and is known as <i>provinceCode</i>. The values are a restricted set:
AET etc.
</p>
<p>
The property whose domain is the class of COUNTRY, and is known as <i>inCountry</i>. The values are a restricted set:
Albania etc.
</p>
<p>
The property whose domain is the class of EVENT, and is known as <i>atTime</i>. The values are a restricted but ongoing set:
2002 etc.
</p>
<p>
These are written here below in TURTLE
</p>
<p>
sdbds:provinceCode a skos:Concept ;
skos:prefLabel "province code"@en ;
skos:definition "3 letter code as defined in Salesian Termbase <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.ProvinceCode">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.ProvinceCode</a>"@en ;
rdfs:domain sdb:Code ;
rdfs:range <a href="http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.ProvinceCode">http://www.sdb.org/pmwiki/pmwiki.php?n=Termbase.ProvinceCode</a> .
</p>
<p>
sdbds:inCountry a skos:Concept ;
skos:prefLabel "in country"@en ;
skos:definition "A country in the ISO country list"@en ;
rdfs:domain gn:Feature ;
rdfs:range gn:Country .
</p>
<p>
sdbds:atTime a skos:Concept ;
skos:prefLabel "at time"@en ;
skos:definition "an abstract instant or interval of time that is when an event happened"@en ;
rdfs:domain lode:Event ;
rdfs:range owltime:TemporalEntity .
</p>
</div>
</div>
<div id="outline-container-5" class="outline-2">
<h2 id="sec-5">5 Reference Concepts </h2>
<div id="text-5">
<p>We have created a set of reference concepts. Best practice suggests:
</p><ol>
<li>
Persistent URI for each class and property (kept in the www.sdb.org namespace)
</li>
<li>
Preferred label annotation (skos:prefLabel). This is essential for mousovers, tooltips and other human use factors.
</li>
<li>
All classes and properties have a clear definition, via skos:definition or rdfs:comment.
</li>
<li>
Alternative labels which include language (at least @it) versions and other alternative labels that may be in use.
</li>
<li>Domain and range indications given in most instances. These are
less a case of constraints but more a case of axioms which help
reasoning.
</li>
<li>Forms part of a wider coherent structure. This vocabulary joins
both ConsecratedLife# and salesian# at the same domain address:
www.sdb.org/vocabulary.
</li>
</ol>
</div>
</div>
<div id="postamble"><p class="author"> Author: jbfox
<a href="mailto:jbfox@sdb.org"><jbfox@sdb.org></a>
</p>
<p class="date"> Date: 2011-10-14 11:57:22 CEST</p>
<p>HTML generated by org-mode 6.21b in emacs 23</p>
</div>
</body></html>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' savages.
!!!''Definition:'' (if a precise one exists)
A definition from a dictionary in Don Bosco's own time (//Dizionario di cognizioni utili//, Torino 1864) attempts to describe 'savages' as having broad shoulders, enormous heads, black curly hair, short beard, expressionless face, and around three metres tall!
People in a primitive and uncivilised state; wild and fierce; cruel and hostile; brutal and barbarous.. (Oxford Reference Dictionary (1980)
!!!''Synonyms:''
tribal people(s)
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco retained the term in his reference to some of the native populations he wished to evangelise, drawing his anthropological and ethnographic data most likely from Romantic literature and nineteenth-century encyclopedias.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
ALERT! The question is how to translate this term today, since 'savages' sounds too strong. The term did have an ambiguous feel even for Don Bosco, since there was still the Romantic period sense of the noble savage in the literature of the time, nor should we forget that the concept first came to Don Bosco in the context of a dream about peoples who could be saved, and that one of these people, Ceferino Namuncurá, has already been beatified! Today we might consider glossing the word as 'tribal people' or something similar.
!!!''Citation''
Go to the‘savages, among them the light of the Gospel has not yet penetrated’ (MB XI,385)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
<$list filter="[tag[Semantic categories]sort[title]]"/>
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' sensus ecclesiae. Remains untranslated
!!!''Definition:'' (if a precise one exists)
Our awareness of being in, and of the Church (from Message of members of 19th General Chapter to confreres, 1965)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Though he may not have used the precise phrase, there is every indication, as Pietro Stella points out in his //Prevenire non reprimere//, that the 'sensus ecclesiae' and fidelity to the Pope were an important aspect of Don Bosco's work of initiating young people into faith. Catechetics, apologetics, pedagogy all converge for Don Bosco on the importance of young people understanding that only in the Catholic Church will they find salvation, the means of grace: revelation preserved in its fullness and integrity, sacraments administered with the fullness of grace and validity. For Don Bosco extra ecclesiam nulla salus was at the heart of his writing: the //Storia ecclesiastica//, the //Avvisi ai cattolici//, the //Cattolico istruito//, his many apologetic works.
A single citation from the post-Vatican II period, from the presentation of the 2005 Strenna by Fr Pascual Chávez, offers a clear insight into the precise importance of the phrase in the Congregation today. Speaking of the 'sensus ecclesiae' in Don Bosco and the Salesian tradition, he says:
"This 'sensus Ecclesiae' is found in a wonderful form in the fusion Don Bosco made of the titles of 'Mary Help of Christians' and 'Mother of the Church'...Perhaps no one has developed this 'sensus Ecclesiae' in reflection and action so well as Fr Egidio Viganò. He spoke of it explicitly in his presentation of the ecclesial dimension of devotion to Mary Help of Christians. In the letter on 'The animation of the Salesian Rector' he wrote: 'The Rector, because he is a priest, must develop in an ecclesial manner the significance and objectives of his own pastoral activity and of that of the community; he must live and get others to live in harmony and collaboration with the Pope, the Bishops and priests; he must foster relationships with them: friendship, esteem and collaboration; not simply for diplomatic reasons or to make life easier, but because all of this is an important aspect of his service to the Salesian community'....As the Salesian Family we pray with and for the Church; we try to 'sentire cum Ecclesia'; we belong to the Church; we live in the Church; we are Church. We could express this 'sensus Ecclesiae', which is an essential element of our charism, in an ecclesiological doxology: 'For the Church, with the Church, in the Church, to you almighty Father, through the Son and in the Spirit, be all glory and honour for ever and ever. Amen'."
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Charism|carisma]].//
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' discipleship. Literally, '(walking) in Christ's footstpes'.
!!!''Definition:'' (if a precise one exists)
An ancient term in Christian spirituality, in reference to either the apostolic following of Christ, or the //imitatio christi// in general Christian life. Today the term is clearly recognised for its use within the context of Consecrated Life.
!!!''Synonyms:''
following Christ, walking in Christ's footsteps
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The Apostolic Exhortation //Vita Consecrata// does not deal separately with each of the evangelical counsels. It unites them in the single grace of the //sequela Christi//, limiting itself here and there to the particular significance, values or demands of each. In this way it emphasizes the character of a personal rapport with the Lord which belongs to profession and the spiritual dimension of the vows. Each counsel implies specific attitudes and commitments, but ultimately includes the other two as well. It is difficult to think of a consistent and luminous chastity detached from the poverty which consists in the total offering of one's personal and material goods, or from the obedience of heart which makes one available for the mission, cost what it may. And vice versa. (Fr Vecchi in his letter on Chastity. 1999).
!!!''Usage notes''
Sometimes simply left untranslated. Alternatively, discipleship or walking in Christ's footsteps, or ... depending on context.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
G25comunità 1: ...cogliere la vita come dono e compito, espressione della 'sequela Christi'
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[consecrated life|vita consacrata]].//
!!!!''SL'' is ''[fr ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' charity sermon.
!!!''Definition:'' (if a precise one exists)
A term used to describe sermons (in France during the 19th century) aimed at inspiring the congregation to donate to charitable works.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Don Bosco employed this approach to gain support for his youth works in France in the late 1800s. His most famous //sermon de charité// was at the //Patronage// opened in Nice. To its printed version he attached his summary, for the first time, of the Preventive System. Don Bosco gave the //sermon de charité// his own typical structure. Cf. the quotation that follows from P. Braido's masterly two volume work on Don Bosco.
!!!''Usage notes''
The term could be glossed as 'charity sermon' but more often than not it is retained in its original French.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
//Don Bosco Young Peoples Priest in the Century of Freedoms//, P. Braido: "The central part of the pamphlet was a sermon de charité developed around an outline that would become habitual for Don Bosco in the years to follow: origins and early development of the Patronage, its purpose, the reward God has in store for its benefactors."
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Servant of God.
!!!''Definition:'' (if a precise one exists)
The Catholic whose cause of beatification and canonsation has been initiated. (Instruction //Sanctorum Mater//, 2007)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A cause can only be introduced if the person has gained fame already for holiness (in general opinion), has practised Christian virtues to an heroic degree and if there are no insuperable obstacles to canonisation. Naturally all these have to be established and eventually proven, hence the 'process.'
!!!''Usage notes''
Th term is capitalised in English as 'Servant of God'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[beatificazione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' sector.
!!!''Definition:'' (if a precise one exists)
A key area of Salesian mission as defined formally by the Salesian Constitutions (cf Italian edition C. 133, 134)
<br>
!!!''Synonyms:''
key area, sphere of activity, dimension
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The growth of the 'sector' concept in the Congregation is of particular interest for a number of reasons. The concept is one that has always been defined at the highest level of authority (General Chapter) to begin with. Up until the 19th General Chapter a sector tended to be determined by one or other work (schools, technical schools, oratories, catechetics...), or was even based in people (past pupils, cooperators...). From the 20th General Chapter onwards, an even more essential factor predominated - aspects and dimensions of the life and mission of the Salesians which touch on the entire Congregation.
Thus GC 20, 21, 22 defined effectively six sectors (Youth Ministry, Formation, Social Communication, Missions, Economy, to which we need to add the Salesian Family as a sixth), which are represented by a member of the General Council. If we wanted to think in terms of a seventh, we would group the Regional Councillors into a 'sector', since they respond to an overall concept touching the entire Congregation which combines elements such as decentralisation and unity, dialogue, shared responsibility, the inculturation of the charism in a determined area. Be they 'sector' or 'regional' councillors, they play an equal part in the General Council.
The Salesian Sisters do not speak of 'sector' but of //ambito// or 'sphere of activity, field', but for practical purposes probably best glossed as 'sector' in English.
<br>
!!!''Usage notes''
''Of particular note'': the English translation of C. 133 is in error. It refers to the councillors in charge of 'special departments', thus introducing a terminological and indeed a conceptual confusion (cf. the note below). The Italian original clearly and deliberately speaks of //settore// at this point. The mistranslation of the Constitutions then led to a continuation of this terminological confusion in English: the GC25 documents speak of 'Departmental Councillors' e.g. no. 108 and then in no. 112 tries to address problem areas that arise 'between the various sectors'. Part of the problem is the very lack of clarity in terminology!
It is important here to make a clear distinction between 'sector' and 'department'. The 'sector' is tied directly to the charism (an aspect, dimension of), while a 'department' is an administrative necessity. One might expect far more flexibility with the notion of department - indeed whether one or other department exists or not) than with a 'sector'. It might also be said that some care needs to be taken to see that the subordinate concept of 'department' does not, in practice, pretend to be its 'superordinate', the 'sector'.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[ambito]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SIHM Sisters Servants of the Immaculate Heart of Mary.
!!!''Definition:'' (if a precise one exists)
Religious Congregation of Diocesan right. Founded in Bangkok Thailand 1937 by Bishop Pasotti. Members of the Salesian Family.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[ar]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' chain, connection
!!!''Definition:'' (if a precise one exists)
Silsila or Silsilah (Arabic: سلسلة) is an Arabic word meaning chain, link, connection often used in various senses of lineage. In particular, it may be translated as "(religious) order" or "spiritual genealogy" where one Sufi Master transfers his khilfat to his spiritual descendant.In Urdu, Silsila means saga. (Wikipedia).
!!!''Synonyms:''
link, spiritual genaology
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
This term was applied by Fr Sebastiano D’Ambra PIME, the founder of the Christian-Muslim dialogue movement (1984) to the dialogue between Christians and Muslims.
The term perfectly fits the aim of the movement. The key word is ‘DIALOGUE’. Creating a culture of dialogue is the only way to connect people torn by conflict because of culture and religion. Planting the culture of dialogue is the only path to peace. In the mind of the founder, such ‘culture of dialogue’ leading to peace must necessarily be a spirituality one should embrace. As spirituality it is a life-in-dialogue with God, with self, with others, and with creation. These four dimensions of dialogue reminded me of the disharmony brought about by original sin [Gen 3:8-19], man’s disharmony with self, with God, with neighbour, and with nature.
!!!''Usage notes''
The term may be found in use in the southern Philippines, in the context of Christian-Muslim dialogue, and in Pakistan, which comes under the FIS Province.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' Chronicles of the Institute of the Daughters of Mary Help of Christians.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en ]'' (Target Language, as above) <br>''Glossed as:'' preventive system.
!!!''Definition:'' (if a precise one exists)
"An integration of beliefs, attitudes, actions, interventions, means, methods and structures which have progressively constituted a characteristic general way of being and acting, both personal and in community, of Don Bosco, of individual Salesians and of the Family". (Viganò AGC 290, p.10)
<br>
!!!''Synonyms:''
<br>
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
//Little Treatise on the Preventive System// (March-April 1877). First published by Don Bosco as an appendix to the address composed in 1875 on the occasion of the dedication of the Salesian orphanage in Nice (France). It sets forth concepts and principles that are fundamental in his educational praxis. In spite of the title “(preventive”), which Don Bosco probably chose in order to situate his method within a general educational category, this little work embodies some (not all, by any means) of the insights gained over many years of experience in education.
If asked to give a brief practical description of the task of the educator, Don Bosco would have compared it to the task of good Christian parents with respect to the education of their children. For at the philosophical and consequent environmental levels, Don Bosco based his educational method on such an affective relationship between educator and pupil as may be found in a good family. This tersely describes Don Bosco's way with young people, no matter in what situation he found them. In effect, the key “operative” words of the method were familiarity, affection and trust.
!!!''Usage notes''
Often found capitalised as Preventive System
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
DBmem: ..Si facciano sacrifizi pecuniari e personali, ma si pratichi il sistema preventivo...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[loving-kindness|amorevolezza]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Sisters Announcers of the Lord.
!!!''Definition:'' (if a precise one exists)
Religious Congregation of Diocesan Right
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Founder: Bishop Ignazio Canazei inspired by Bishop Luigi Versiglia.
Foundation date: Shiu Chow (China), 30 May 1931.
Salesian Family membership: 28 July 2005 (decree 31 January 2006) in AGC 393 (2006) 97.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Sisters Servants of the Immaculate Heart of Mary.
!!!''Definition:'' (if a precise one exists)
Founded in Bangkok Thailand 1937 by Bishop Pasotti. Members of the Salesian Family.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SMA Sisters of Maria Auxiliatrix.
''TL'' is ''[it]'' (Target Language, as above) <br>''Glossed as:'' Suore di Maria Auxiliatrix SMA.
!!!''Definition:'' (if a precise one exists)
Congregation of Diocesan Right founded by Fr M.C.Antony SDB on 13 May 1976, in Tamil Nadu, to "look after poor and abandoned young girls". Member of the Salesian Family.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Prior to 1976, the Government of Tamil Nadu had allotted place at Vyasarpadi for Repatriates from Burma for their inhabitation. But the Government had not cared for their daily livelihood. Seeing the agony and the trauma of the people, Rev. Fr. Francis Schoolz SDB, the then Parish Priest of Beatitudes Centre visited and consoled them. He also offered assistance to them in terms of both cash and kind. Then, Fr. Schoolz realized that these displaced people needed direction and guidance for their development. For this reason, Fr. M.C. Antony SDB, became the asst. parish priest, to take care of these underprivileged and oppressed people, so as to enable them to live a decent living. With little hesitation, Fr. M.C. Antony took up this noble assignment along with the Legion of Mary. Having witnessed the enormity of the trauma and the pathetic condition of the people, especially young girls, Fr. M.C. Antony realized that a Religious Congregation was needed to take care of them. This vision gave him an impetus to start the Congregation of Sisters of Maria Auxiliatrix.
The group gained membership of the Salesian Family in 2009 (decree 28 July 2009)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The term 'Maria Auxiliatrix' is Latin.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SMI Sisters of Mary Immaculate.
''TL'' is ''[it]'' (Target Language, as above) <br>''Glossed as:'' Suore di Maria Immacolata SMI.
!!!''Definition:'' (if a precise one exists)
Religious Congregation of Diocesan right, founded by Bishop Louis La Ravoire Morrow
12, December 1948 in Krishnagar, India. They were founded originally under the name "Catechist Sisters of Mary Immaculate" in 1922 then refounded as Catechist Sisters of Mary Immaculate Help of Christians but more commonly known as Sisters of Mary Immaculate.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
"Our Founder gave us the spirituality of St Teresa of the Infant Jesus, the "little way" of spiritual childhood, and the spirit of Don Bosco: initiative, practice of the preventive system, penance expressed as "always upright and smiling". Fr Egidio Viganò wrote: “Learning through life and reflection about the encounter between Don Bosco ‘the Salesian’ and St Teresa ‘the Carmelite’ can be a common good for all of Don Bosco's family… It points out that it is possible and how it can be so for the Salesian charism to be enriched when it draws values from the ‘little way’ and offers all Groups in the Family further reason for giving thanks to God for the inestimable gift that Don Bosco's spiritual experience represents for the Church”. What binds us to the Salesian Family most of all is the person of Don Bosco and his educative system, his love for the young, charity".
Admitted to membership of the Salesian Family on 10 June, 1992
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Mutual Aid Society.
!!!''Definition:'' (if a precise one exists)
This Society was an association of working youngsters, established within the Company of St. Aloysius, as insurance against temporary unemployment or sickness.(Lenti, //Don Bosco: History and Spirit//, Vol 3)
!!!''Synonyms:''
Mutual Benefit Association
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Members paid an enrolment fee of 1.50 lire and a membership fee of 5 //soldi// (1/4 lira) per week. These contributions were built up as a fund out of which members received benefits in time of sickness or unemployment. Don Bosco established this society to remove working youngsters from the moral and religious dangers that youngsters encountered in mutual aid societies or workers’ unions in the city.
In 1857 the Mutual Aid Society joined the “Adjunct” Conference of St. Vincent de Paul established at the Oratory
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Adjunct Conference of St Vincent de Paul|Conferenza di San Vincenzo de Paoli]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian Society.
!!!''Definition:'' (if a precise one exists)
"Our Congregation is approved...We are no longer private individuals but a Society, a visible body.." (BM IX, 26).
A more formal description of an alternative term, 'Salesians of Don Bosco' (rather than a definition, though it contains elements of such) is found in Constitution 2 of the SDB Constitutions: "We, the Salesians of Don Bosco (SDB) form a community of the baptized. Submissive to the bidding of the Spirit we are resolved to carry out the Founder's apostolic plan in a specific form of religious life to be in the Church signs and bearers of the love of God for young people, especially those who are poor".
!!!''Synonyms:''
Society of St Francis de Sales (complete official title), Salesian Congregation, Pious Salesian Society (of historical value but deprecated as a term), Pious Society (also deprecated), Salesians of Don Bosco (the most common title in ordinary use today), Salesians (normally understood as SDBs, within the context of the Salesian Family of Don Bosco, but when 'Salesian' is understood as an adjective, it could apply more generally)
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
At Pope Pius IX's suggestion, Don Bosco, who up until then (1859), referred to the congregation of St Francis de Sales as involving both 'interns' and 'externs', adopted the term "Pious Society of St Francis de Sales" to describe the 'interns'. The Salesian Society in that understanding came into being on December 9/18, 1859.
We know that Don Bosco's original concept (in a Rule he had sketched out and presented to Pius IX in March 1858), was for a society or congregation which allowed its members to be "a religious for the Church and a free citizen in civil society". Even as late as 1880 he was still claiming that the Salesians were not a religious congregation but a charitable religious organisation to help abandoned young people and that the Latin word 'vow' might be understood as 'promise' in Italian! (Cf Lenti, Vol 3, //Don Bosco History and Spirit//, pg 289).
The founding document of the Salesian Society was drawn up on December 18, 1859. It is interesting to note that its wording speaks of "a society or congregation...".
Whatever Don Bosco's real intentions, thwarted in some ways by his being gradually forced into the ecclesiastical structure, this new 'society or congregation', which we should really recognise as 'The Salesian Society' was distinct from the 'Congregation of St Francis de Sales'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Congregation|congregazione]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' solidarity.
!!!''Definition:'' (if a precise one exists)
In the broader sense of the termç
(1) General: Community of interests, feelings purposes, or fellowship that arises from such;
(2) a Christian virtue. It seeks to go beyond itself to total gratuity, forgiveness, and reconciliation. It leads to a new vision of the unity of humankind, a reflection of God's triune intimate life (//Solicitudo Rei Socialis// no. 40) .
Other than the definitions given above, often in practical Salesian language we find the term used in reference to aid, mostly of the financial kind, or as represented by NGO, Mission Office activity, or as a 'fund' (e.g. the Rector Major's Solidarity Fund).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In fact, we find in the 'Charter of identity' a helpful description of Salesian solidarity which is much broader than that of financial aid:
"1. education, which is the highest form of solidarity, conceived of and realised accoring to criteria which Salesian assistance suggests.
2. Civil, social and mission voluntary service, much widespread amongst young people today ...
3. Social and political involvement..."
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Charter of identity|Carta di comunione nella Famiglia Salesiana]], [[RM's Solidarity Fund|Fondo di solidarietà del Rettor Maggiore]] //
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SOSC Salesian Oblates of the Sacred Heart.
!!!''Definition:'' (if a precise one exists)
Religious Congregation of Pontifical Right founded by Salesian Bishop Joseph Cognata, the Salesian Oblates of the Sacred Heart are a Congregation of active life with a missionary purpose: “the coming of the kingdom of God in the most needy places”. They dedicate themselves particularly to the education of children in pre-schools, and to formation of youth, particularly in regard to catechetics and helping youth groups together with the parish priests.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' family spirit.
!!!''Definition:'' (if a precise one exists)
The Salesian style of life which had its origins firstly at The Becchi and then especially at Valdocco from the time Don Bosco brought his mother there to be with him in his work for poor children.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
For Don Bosco family spirit was the result of familiarity, family-style relationships and a home-like way of living and working together. He would say that without familiarity there is no affection, without affection there is no mutual trust and without mutual trust there is no personal contact and therefore no education.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[family atmosphere|clima di famiglia]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian spirit.
!!!''Definition:'' (if a precise one exists)
In the letter to the Cooperators the Rector Major wrote: 'When the Regulations speak of 'Salesian spirit' they are describing the characteristic features of the Gospel experience tested in the school of Don Bosco as an original style of life. a synthesis of criteria of judgment and of methodology of action.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
It is not a conceptual analysis of relationships with God and one's neighbour. and neither is it the doctrinal presentation of the spirituality of a state or ministry, but the description of the spiritual features which identify the Salesian vocation'.
AGC 318. 1986, p. 28.
While the primary reference is to the foundational experience and to the 'spirit of Don Bosco', it also includes this spirit as lived and shared over time in his Family. In fact 'Salesian spirit' is a criteria for membership of the Salesian Family (ASC 304, 1982, p 61ff).
The Constitutions (especially Chapter 2) speak more of 'Salesian spirit' than they do of 'Salesian spirituality', since this latter would seem to deal more with the relationship between the Salesian and God, while 'Salesian spirit' involves not just the Covenant with God but apostolic consecration, activities of the mission, the life of communion, practice of the evangelical counsels, formation, animation, government.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
The Salesian spirit finds its model and source in the very heart of Christ, apostle of the Father. (SDB Constitutions, C. 11)
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Salesian youth spirituality.
!!!''Definition:'' (if a precise one exists)
GC23 produced a brief outline of Salesian Youth Spirituality with its important dimensions of daily life, encounter and friendship with Christ, gradual introduction to the life of the Church and a life of service.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term gained prominence through the work of the 23rd General Chapter in 1990. It is a spirituality that is also applicable to adults. Not mentioned explicitly in the GC23 outline, but of foundational importance, it would seem, is the role played by mutual confidence between the young person and his or her spiritual guide.
!!!''Usage notes''
May be capitalised as Salesian Youth Spirituality.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
Strenna05: ...componenti di una spiritualità giovanile salesiana c'è appunto un forte "senso di Chiesa"
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[youth ministry|pastorale giovanile]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' SSCS Salesian Social Communication System.
!!!''Definition:'' (if a precise one exists)
An integrated and unified communication project. (Fr Martinelli to Salesian Bulletin editors, 1998).
The SSCS is also a book, first produced in 2005 by the Department of Social Communication, Rome.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term 'system' was used by Fr Vecchi (2000) to call attention to the pervasive aspect of Social Communication throughout Salesian presence: "Our communities, our works and activities, to which we give rise like every institution, become part of a much wider system of communication...".
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[social communication|comunicazione sociale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en ]'' (Target Language, as above) <br>''Glossed as:'' strenna. Remains untranslated
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Dono che si fa a parenti, amici, conoscenti, o che una ditta fa a clienti o a dipendenti, in occasione di festività annuali//. A gift given to relatives, friends, acquaintances, or a firm's gift to clients or employees for the New Year.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A Salesian tradition from DB himself whereby the Rector Major offers a 'gift' by way of a word or two for the New Year. These days it is usually an ecclesial comment in a sentence or two followed up by a commentary traditionally given to the FMAs on New Year's Eve
!!!''Usage notes''
It should not be translated as a 'motto' or 'slogan', since this misses the 'New Year gift' aspect of the term.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' SYA Salesian Youth Assistants.
!!!''Definition:'' (if a precise one exists)
SYA Nature and Rationale Document (2019): The SYA is a group of single young men and women who have spent many years as members and leaders of the Don Bosco Youth Center in the Archdiocesan Shrine of Our Lady of Lourdes. They may no longer hold positions of leadership in their respective youth groups and in the Parish Youth Coordinating Council (PYCC) but they are still willing to serve the young. They are still influential contributors, especially in terms of giving advice, peer-to-peer counseling, and general assistance to various youths, whether a member of a youth group or not. They still serve the young but in a more inclusive and mature way.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The group was formed in September 2018. The first few members were only six but eventually three more were added. Soon the members elected their officers. They were officially installed, and consequently recognized as an official parish organization, during the 6:00 PM mass of 27 January 2019, a Sunday. The founding of the group is not just to offer these former leaders an opportunity to continue their service but also to introduce them to the Salesian Family. By becoming members of the SYA they are included in the Salesian Family as Past Pupils under Bro. Louie D. Domasian, SDB insofar as they have been under the Salesian system of education in the youth center environment. This makes them truly Salesian pupils under the Salesian way of education.
The group may also be considered a “bridge that connects Youth Ministry to the Salesian Family.”
In concrete terms the SYA members serve in general assistance of the daily evening programs in the DBYC, animate the youth prayers and the Rosary, give Good Night talks to the young, are resource speakers for the monthly formation, recollections and youth encounters. They also attend the Salesianity formation, coordinate Youth groups and contribute to the drafting of the SEPP for the DBYC associations. At present there are nine members of the SYA, accompanied by the Salesian community of Lourdes Archdiocesan Shrine, Cebu. The SYA has its own criteria for the membership and formation plan for its members.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[youth ministry|pastorale giovanile]], [[Salesian Family|famiglia salesiana]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' little theatre.
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Piccolo teatro, spec. per rappresentazioni di burattini o di marionette (e in questo caso può significare anche lo spettacolo stesso o il suo genere) e come giocattolo per bambini.// Little theatre, especially puppets ... for children.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term is both a common one in Italian (e.g. 'puppet show') and a rather special one in Salesian history for the importance Don Bosco gave it in his educational approach. He often referred to and in fact encouraged //teatrino// in contrast to //teatro//, possibly because he considered the large scale theatre as too worldly. This would be consistent with his view (from first meeting Cafasso as a young seminarian) that worldly shows are not for the priest or religious person.His understanding of //teatrino//, however, was also conditioned by necessity - especially during the time of the wandering Oratory, or on the autumn walks.
!!!''Usage notes''
Perhaps the term can remain untranslated, since 'little theatre' does not really convey the intentions of Don Bosco, and there is relaly no equivalent for it in English. 'Puppet show' is not what he meant. 'Small dramatic scenes' would be closer to his understanding. 'Skits' and the like, so typical of youngsters efforts on stage ... but then, we also need to think of the digital age today and how this concept might be conveyed in video and similar.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
<$list filter="[tag[Term status]sort[title]]"/>
<big>[ˈtest]</big>
!!Noun
# the means by which the presence, quality, or genuineness of anything is determined; a means of trial.
#the trial of the quality of something: to put to the test.
#a particular process or method for trying or assessing.
#a set of questions, problems, or the like, used as a means of evaluating the abilities, aptitudes, skills, or performance of an individual or group; examination.
#//Psychology.// a set of standardized questions, problems, or tasks designed to elicit responses for use in measuring the traits, capacities, or achievements of an individual.
#//Chemistry.//
##the process of identifying or detecting the presence of a constituent of a substance, or of determining the nature of a substance, commonly by the addition of a reagent.
##the reagent used.
##an indication or evidence of the presence of a constituent, or of the nature of a substance, obtained by such means.
!!Verb (used with object)
#to subject to a test of any kind; try.
#//Chemistry.// to subject to a chemical test.
#//Metallurgy.// to assay or refine in a cupel.
!!Verb (used without object)
#to undergo a test or trial; try out.
#to perform on a test:<br/>@@.example People test better in a relaxed environment.@@
#to conduct a test:<br/>@@.example to test for diabetes.@@
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' The Disciples.
!!!''Definition:'' (if a precise one exists)
Association for men and women of diocesan right waiting to be approved as a secular institute of pontifical right. In January 2009, the Rector Major and his Council recognised the association as a member of the Salesian Family.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The institute consists of two principal branches (men and women) having their own separate juridical structure. The institute has a President, who is elected by the General Assembly. He is assisted by his Council formed up of the General Coordinator and the respective General Councils of each of the branches.
Like other secular institutes, they make the profession of the evangelical councils. The sisters are sent two by two mostly to the villages for their apostolate. They teach catechism, help in the parishes, run balwadis, etc. The brothers are sent to work mainly in the institutions. They are also working in many of the bishops’ houses. They follow a simple life style based on the Gospel values and are ready to do any work given to them especially in the remote areas.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
An easier way (but it will not include the template with some parts pre-filled so is a little more work) is simply to click the + icon under EAO Glossary (not the +Add tab under the search box) and a new tiddly (blank) will appear where you are reading this now. Click the 'pen' iconand write what you want, using appropriate 'wiki' text. Leave line spaces to get new paragrpahs. Write it any way you want.
Since this entire file is yours, you can do whatever you like with it and read up how to make changes. If you do that, it would be wise to change the name of the file you are now reading so that this version always remains untouched for your future access.
Enjoy!
If you follow the directions here, you should be able to add a term easily enough. It only looks complicated!
1. Go to the +Add tab over on the right side as you look now, and click it
2. It produces a page with the possibility of inserting new characters, new terms, new term status. If you are working with a Latin alphabet there will be no need to intrroduce any new characters, and the term status at the bottom has already been completed, so all you need is the middle group, 'Term'.
3. If a previous term and its gloss are there, just write over them (cancel) and write in your term. It may be one or more words, Then write its translation (Gloss). Choose Category from the list of 31 or so. If unsure just choose no. 29, 'concept'. It can be fixed up later. Then you can choose a status, but currently this will not transfer. Do it anyway, so you have decided what status the term has.
4. Click +Add term and this set of instructions disappears and is replaced by a 'tiddly' with some of the basic information filled in and a skeleton of the information needed.
5. Click on the 'pen' icon, and the writable part of this tiddly appears. Fill in what you can. This is where 'wikitext' comnes into play if you want bold, italics etc. remember to always leave a couple of lines blank after a paragraph or you won't get a paragraph.
6. When you have filled in what you can, click on the tick above and your toddly is finished. You can get it out of sight by clicking the cross (x). The tiddly will still be there. If you click the rubbish bin, then it will be gone forever. You might need to do that if you make mistakes. Then start again.
Enjoy!
Copy and paste these instructions to a separate text file or make a copy any way you wish, because these instructions will disappear from sight (though they will still be visible underneath if you scroll down) as soon as you complete the first step!
1 First of all and most importantly, click on the Index tab to the right of where you are reading this now. Then click on 'Advanced tools' and it will open up a list of tiddlers that make this dictionary possible. The very first of these, ''add-new-menu'', is the one you need, so click on it.
2. You will see four sections: ''Character'', ''Term'', ''Category'' and ''Status''. If you are working with a Latin Alphabet, you do not need the Character section (1,2,3 ... Aa, Bb, Cc ... etc). If you work in another script, you will need to introduce your characters for that script.
3. ''Category'' and ''Status'' have already been set up, so ignore those two sections, and focus on the ''Term'' section. Put in the term and its translation (depending on which language pair you are using).
4. Choose the appropriate category from the list (if unsure, try 29, 'concept' which covers everything!). Then decide on the appropriate status for the term, but at the moment it won't transfer, so no need to select it there. It will be need to be added in later.
5. Click +Add term and a template tiddly will appear with some information already there, including the term and its gloss/translation you just put in. The Category you chose will be at the top (it becomes a yellow tag). Click on the 'pen' icon at the top and the writable version of this template will appear.
6. This looks a bit complictaed, but look carefully and you will see where you need to fill in information. Leave two lines spaces blank if you want paragraphs.
7. To add a ''status'' tag (which did not transfer; the category one did) click on 'new tag' at the top and type TS. A list of the 5 possible status tags will appear, so choose the appropriate one.
8. If you have made a mistake, you can click the bin icon at the top and your tiddly will be gone forever! Go back to the righthand side and start again! If all is well, click the tick icon and it will be saved, but to finally save everything, click the red tick with a circle around it on the right. The entire file will be saved to wherever your files normally save (probably your downloads folder).
Obviously you can open an existing tiddly if you want to adjust a term, and click the 'pen' icon and change whatever you want to change, then save as you have done above.
All done. Enjoy. If it all looks too difficult, go back and do it [[The easy way]].
The official page for TiddlyWiki is http://tiddlywiki.com/
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' credentials for belonging to the Salesian Family.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A first degree of belonging is that of the [[Salesians|SDB Salesiani di Don Bosco]], [[Salesian Sisters|FMA Figlie di Maria Ausiliatrice]] and [[Salesian Cooperators|Cooperatore Salesiano/Salesiano Cooperatore]] - the first three groups founded by Don Bosco and which inherit his work directly. These three are a reference point for all the other Groups with regard to spirit, field of mission, apostolic and pedagogical method and activity.
A second degree of belonging involves the many Groups of consecrated life be they religious or secular, and certain Catholic Associations founded by Don Bosco's 'sons and daughters'.
A third degree of belonging applies to circles which are part of the vast Salesian movement. They include [[Friends of Don Bosco|amici di don Bosco]], the [[Salesian Youth Movement SYM|MGS Movimento Giovanile Salesiano]], voluntary service groups which take their inspiration from the Salesians/Don Bosco, then teachers, catechists and a whole range of collaborators and co-workers.
The degree of juridical belonging is determined by an official letter of recognition from the Rector Major in response to a specific request.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' TR Witnesses to the Resurrection.
!!!''Definition:'' (if a precise one exists)
Lay Spiritual Movement. On 8th December 1984 the Easter Project was born: TR 2000 (//Testes Resurrectionis// - Acts 1:21) with its own charter. Thus the TR Movement came about as a place where friends who shared the same ideal and desire could meet: to experience more closely in daily life and in the circumstances of each day, the good news of the Resurrection, as a source of life and happiness.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
As a movement it is open to everyone, without limits of age, culture or origin; those who join have a particular experience of faith and friendship, and make up a “family of families”, where together they are formed in a culture of life in order to be more effective wherever the Lord calls them. Fidelity to the Risen Christ, then, is the basis of TR spirituality and the style of its membership as expressed in an Easter joy nurtured in the heart, by optimism and hope, in the service of Christ who is present in the poor. This interior attitude is at work deep down and sustains people in their difficulties of real life.
Spirit and life of the movement.
The TR Movement (Witnesses to the Resurrection) comprises local cenacles in various parts of Italy that carry out the inspirational principles and aims of the movement. These local cenacles are organised into three divisions: youth, adults, volunteers. The adult division has within its ranks a group of consecrated lay women. At national level each division is represented by a National Coordinator, who refers to the Movement's General Coordinator. A notable group, in as far as it takes care of matters of particular interest, is the youth division.
Founder: Fr Sabino Palumbieri SDB
Date admitted to the SF: 25th March1999
National recognition: by the Permanent Council of CEI at its meeting on 22-25 September 2008.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Transcript.
!!!''Definition:'' (if a precise one exists)
The original acts (proceedings) of the Diocesan Inquiry into the cause of beatification and canonisation.
!!!''Synonyms:''
Transumptum (original Latin term)
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
A collection of papers, or a folder which has the seal of the Congregation for the Causes of Saints on it and which contains the Acts of the Diocesan investigation into the heroic virtues of the person in question.
!!!''Usage notes''
The term is rather specialised and tends to be used more often in its original form, since 'summary' seems rather too broad.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[libellus supplex]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' TVET Technical Vocational Education and Training
!!!''Definition:'' (if a precise one exists)
TVET stands for Technical Vocational Education and Training.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In ASEAN countries there are 41 Don Bosco TVETs and 15 in other EAO countries – 9 in the Pacific (Oceania), 2 in South Asia (Pakistan) and 2 in East Asia.
Don Bosco Tech ASEAN is the body that coordinates Salesian Technical Vocational Education and Training Centres in Myanmar, the Philippines, East Timor, Indonesia, Cambodia, Laos, Thailand and Vietnam.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[technical training|formazione professionale]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Registry and statistics office.
!!!''Definition:'' (if a precise one exists)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Does all the work of gathering and preserving documentation regarding confreres, houses and Provinces in the Congregation.
!!!''Usage notes''
Note that there is also an //ufficio protocollo// or registry office which links the //ufficio anagrafico// at the Salesian administrative centre (//Direzione Generale//) to the Salesian Central Archives.
Additionally, there is an //ufficio giuridico//, or 'juridical office'
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Some care needs to be exercised in any translation of the term //protocollo// in English. Normally it would not be rendered by 'protocol'. A //protocollo// can be a file which registers all correspondence, for example, or it could be a file number or code assigned to an item.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[General Administration|Direzione Generale (Opere Don Bosco)]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Casket.
!!!''Definition:'' (if a precise one exists)
The coffin or container for bodily remains intended for display purposes.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In Salesian discourse, this term would immediately point to the glass container, effectively a reliquary, containing the body of a Salesian Saint such as John Bosco, Dominic Savio, Maria Mazzarello.... It is also a 'false friend' in the sense that if it is unthinkingly translated as 'Urn', this is not at all in keeping with the meaning of the English word 'urn' which is a kind of vase, a receptacle which may hold the ashes of the dead (or of a certain cricket match!), or liquids such as water or tea.
!!!''Usage notes''
Note that the term in Italian would normally be used in an archeological or historical context (us would 'urn' in English).
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Noted as a 'false friend' because it should not, in reference to the well-known container for Don Bosco's bodily remains (or several thereof!), becalled an 'urn' but a 'casket'. Urns, in English, are understood to contain ashes (e.g. the famous urn kept at Lord's Cricket Ground, containing the fabled ashes of cricket bails which are the origin of the Test Ashes series beteween England and Australia).
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Don Bosco]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
!!!!''SL'' is ''[la]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' Handbook
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Denominazione e titolo di un volume di piccolo formato, spesso tascabile, contenente un prontuario di nozioni relative a un determinato argomento, e per lo più a una tecnica o attività pratica//. Name and title of a small-format, often pocket-sized volume containing a handbook of ideas relating to a particular subject, and most often to a technique or practical activity.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
It may refer to an historical document, the //Vademecum//, written for novices by Fr Barberis. This is accepted as part of the Salesian Tradition. The General Council has its own vademecum or ready reference describing its various functions for internal use only. A small booklet containing general procedures, regulations of an administrative nature.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The term has wider use in Italian, but in English refers specifically (in Salesian discourse) to the two items noted above in 'USage notes'.
!!!''Citation''
"The GC25 appreciates the growing efforts at coordination.....e.g. the Vademecum of the General Council..." (GC25 no. 110)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' Women Volunteers of Don Bosco.
!!!''Definition:'' (if a precise one exists)
A Secular Institute of Pontifical Right. "The Don Bosco Volunteers, in response to the Lord's call, seek to integrate in their lives three characteristic elements of their vocation: consecration, secularity, Salesianity. Fr Viganò described them as 'a novel incarnation of the Salesian spirit of Don Bosco' (from description in The Salesian Family of Don Bosco 1999)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The institute recognizes the Rector Major of the Salesians, successor of Don Bosco, as the leader of the Salesian Family. The institute is structured on three levels: central (General Council), regional (Regional Council) and local (Local Council). The legal headquarters are in Rome. Like most members of secular institutes, the volunteers do not live in community, but live in communion of life, united by a strong sense of belonging to the institute. In particular, they find in the group to which they belong, the best environment in which to put communion into practice. It is supported financially by the contributions of the volunteers. Because of its specifically secular nature, it does not have any works of its own.
The Salesian ecclesiastical assistant offers his priestly ministry to all levels of the institute, collaborating in the initial and permanent formation of the volunteers.
:The Holy Reserve:
A requirement of the mission of a consecrated secular is to live unobtrusively. The volunteer does not disclose that she is consecrated. This permits her to live an ordinary life like other people. Professing and living the evangelical counsels, the volunteer expresses her fundamental option for Christ while living in the world, and with nothing to distinguish her from others. The Women Volunteers of Don Bosco, responding to the call of the Lord, seek to integrate in their lives the three characteristic elements of their vocation: consecration, secularity, Salesian character.
!!!''Usage notes''
Tagged as TS02 due to the fact that members do not seek to make their consecrated state known in any obtrusive way.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Some prefer to call them Don Bosco Volunteers DBV
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' vice provincial, vice rector, vicar of ....
!!!''Definition:'' (if a precise one exists)
TRECCANI: //Chi esercita un’autorità o una funzione in sostituzione o in rappresentanza di altra persona di grado superiore. Con questo valore è stato, nell’antichità e nel medioevo, titolo di funzionarî e pubblici ufficiali// Someone who exercises authority or susbtitues for or represents another person higher up. In ancient times and the Middle Ages, it was the title for a public official.
The Vicar of the Rector Major is the first collaborator of the Rector Major in the government of the Society (Cf. C. 130-132).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Note that //vicario//, in its wider application, but still associated with Don Bosco, was the titel of the public official responsible for law and order in Turin. Michele Benso di Cavour was the //Vicario// of the city, or City Vicar.
The Salesian //vicario// is always a priest (since he can take the place of the RM/Provincial/Rector who will always be a priest. Only relatively recently (after the renewal of the Constitutions) was the role of //vicario// also applied at the local (house) level.
!!!''Usage notes''
The Italian term //vicario// as applied in Salesian government and animation usually needs to be specified since it applies to three levels - world level (of the RM), Province level, vice provincial, and local level (vice rector). In each case the //vicario// is the first collaborator of the RM/provincial/rector, and can take his place when that person is absent or impeded.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Tagged above as a False Friend, because it cannot always be glossed in English as 'vicar'.
!!!''Citation''
DBmem: ..Il mio vicario d'accordo col prefetto prepari e legga in Capitolo una lettera da dirigersi a tutti i...
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[ ]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[ ]'' (Target Language, as above) <br>''Glossed as:'' (provincial) (extraordinary) visitation.
!!!''Definition:'' (if a precise one exists)
PROVINCIAL VISITATION: Once a year he (provincial) will make with particular care the provincial visitation to each community
EXTRAORDINARY VISITATION: A six yearly visit to a Province arranged by the Rector Major (a visit he may make personally) and normally assigned to a regional or other councillor to conduct in his name. The delegated 'visitor' has the delegated power of jurisdiction required by the nature of the visit. (Cf R. 104)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
In the case of the Extraordinary Visitation, the person assigned by the Rector Major to carry this out is known as the 'Visitor' or 'Extraordinary Visitor'.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[OtherLink]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' team visit.
!!!''Definition:'' (if a precise one exists)
An initiative that became part of regular practice to promote "the unity of the Congregation as the fruit of communion and charismatic fidelity"(GC25, 88).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
The term came into being and was developed through the initiative of the Rector Major from Fr Ricceri's time. It is not included in the Salesian code of law, that is, it is not prescribed by the Constitutions and Regulations.
The Team Visit aims to accomplish:
# an assessment of how the Provinces and Region have communicated and assimilated GC26 and put it into practice;
# the discovery of basic horizons for the Provinces' and Region's way forward;
#. the study of one or two topics of particular interest for the Region.
The aims and objectives of the Team Visit are in fact dependent on the Rector Major and his Council.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The term would normally be capitalised (both words).
!!!''Citation''
The Team Visit offers some assessments and guidelines that aim to create a mindset and convergence around the direction the Congregation is taking, starting from guidelines of the General Chapters. It proposes to lay out the current state of the Congregation. (From a letter from the Rector major to Provincials, 2010)
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[General Council|consiglio generale]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' vice-province.
!!!''Definition:'' (if a precise one exists)
C. 158 The vice-province is similar to the province. It is established when distance, number or other circumstances require that some houses be detached from one or more provinces, but the lack of personnel, of financial resources or some other reason does not warrant the establishment of a new province.
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
!!!''Usage notes''
The term may be capitalised as Vice-province and may appear without a hyphen as vice province or Vice province.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
The superior of a vice province is called 'superior', not 'provincial' and certainly not 'vice provincial' which is an entirely different role.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[province]] [[delegation]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' common life.
!!!''Definition:'' (if a precise one exists)
Religious institutes are societies in which the members in accord with their proper law profess public vows and lead a life of brothers or sisters in common (Canon 607 §2).
!!!''Synonyms:''
community life, fraternal life in common, fraternal life in community
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
'Common life' for DB was closely linked to the bonds of fraternal charity, obedience. It is something practical rather than doctrinal for him.
Canon Law specifies: "two elements of union and of unity among the members can be distinguished:
- one, the more spiritual: "fraternity" or "fraternal communion", which arises from hearts animated by charity. It underlines "communion of life" and interpersonal relationships;(13)
- the other, more visible: "life in common" or "community life", which consists of "living in one's own lawfully constituted religious house" and in "leading a common life" through fidelity to the same norms, taking part in common acts, and collaboration in common services". (Can 602, 607)
The core element common across cultures and situations is "living and working together".
!!!''Usage notes''
The description 'community life' is more a colloquial reference than an official or even canonical one (the latter refers to 'fraternal life in community' by preference. Thus the term is seen more as a common, homely expression for a reality which is integral to religious life, along with its mission and profession of the evangelical counsels, or vows.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[family spirit|spirito di famiglia]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' consecrated life.
!!!''Definition:'' (if a precise one exists)
“Life consecrated through the profession of the evangelical counsels is a stable form of living in which the faithful follow Christ more closely under the action of the Holy Spirit and are totally dedicated to God who is supremely loved. By a new and special title they are dedicated to seek the perfection of charity in the service of God’s kingdom for the honour of God, for the building up of the Church and the salvation of the world. They are a splendid sign in the Church as they foretell the heavenly glory.” (Canon 573, 1).
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
An implication of the definition is specified in the following canon. The state of persons who profess the evangelical counsels belongs to the life and holiness of the Church. It is therefore to be fostered and promoted by everyone in the Church (Canon 574). This obligation belongs especially to families.
In the Church there are many institutes of consecrated life that differ according to the grace given to them e.g. the intention of the founders, the nature of the institute, its purpose and spirit and its sound traditions….. (Canon 578) these elements are to be included in the constitutions of the institute to protect the vocation and identity of the institute (Canon 587, 1).
The consecrated life by its nature is neither clerical nor lay. If, by the will of the founder, an institute is governed by clerics and implies the exercise of sacred orders, it is called clerical. If, by the will of the founder, the institute is not governed by clerics and does not imply the exercise of sacred orders, it is called lay (Canon 588).
The institute can be either pontifical or diocesan. It is pontifical if it has been established by the Apostolic See. It is diocesan if it has been established by the diocesan Bishop (Canon 589).
Each institute taking into account its special character is to define in its rule or constitutions how the evangelical counsels and the common life are to be lived in the institute. (Canons 598-602) For example, the foundational documents of the community define whether it is contemplative or apostolic.
!!!''Usage notes''
There is often, in common speech, confusion or misuse of terms in relation to consecrated life. At the 1994 Synod on consecrated life ( "The Consecrated Life and Its Role in the Church and in the World." The word "consecrated" was used in place of "religious" because it is a broader concept that includes hermits, virgins, secular institutes, and new forms of consecrated lay persons who do not live in a religious community), the Synod members (Cardinal Hume posed seven questions) asked for clarification:
- Nature of consecrated life. It is requested that a clear definition be given of consecrated life and religious life and the difference between them. What distinguishes religious life from other forms is the profession of public vows of poverty, chastity and obedience which are accepted by the Church, community life and a common apostolate pursued in the name of the institute. In addition to the universal call to holiness, consecrated persons are bound to strive for it by their vows. Consecration is seen as based on the Sacrament of Baptism and it implies a specific relationship to Christ, to the Church and to the world. The "prophetic" dimension of consecrated life as a special way of proclaiming the Gospel was mentioned. The "charism" of the Founder and the institute should be a constant point of reference for all consecrated persons. One group asked for a clarification on whether or not consecrated life is an essential structure of the Church or only a structure in the Church.
What emerged from this important Synod was at least this, in reference to the above: Consecrated life was seen as an essential aspect of ecclesial communion. An important and useful distinction was made between"consecration as such" and various concrete forms of consecration.Consecrated life is more than a structure in the Church; it is a structure of the Church which calls all to holiness.
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
Some canonical terms associated with consecrated life are frequently misused in common speech.
* ''Institutes of consecrated life'' are canonically erected by competent church authority to enable men or women who publicly profess the evangelical counsels by religious vows or other sacred bonds, "through the charity to which these counsels lead to be joined to the Church and its mystery in a special way" (cf. canon 573.2 of the 1983 Code of Canon Law), without this however making them members of the Church hierarchy.
* ''A religious order'' is an order in which solemn vows are taken by members, and that follows an accepted rule. For instance, the Order of Friars Preachers (O.P.) akak Dominicans. Institutes in which members take only simple vows are religious congregations and can be either(a "clerical congregation", if primarily made up of priests and oriented toward priestly work or a "lay congregation" if not. (Canon 588) , for instance, the Sisters of Charity.
* The term ''religious'' (as in, "he/she is a Religious") is commonly used to refer to a consecrated person, a person in religious vows.
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[charism|carisma]].//
!!!!''SL'' is ''[it]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' voluntary service.
!!!''Definition:'' (if a precise one exists)
(1) The free choice made by individuals or groups who are organised to make a contribution to the life of society (general definition in Voluntary service in the Salesian mission, Rome 2008)
(2) Civil and missionary volunteer work for collaborating with other organisations for human advancement and evangelisation (GC23 no. 179)
(3) A practical way of commitment and gratuitous service among the very poor as volunteers in the context of vocational guidance of the young (GC23 no. 252)
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
It is noted that in the Salesian context voluntary service has developed considerably in recent decades, so much so that some Salesian works begun in the last 25 years would not be what they are without the valuable service of the volunteers.
At present in the Salesian world there is a great variety of experiences considered “voluntary service.” It is difficult to make a complete list. We shall mention some of the more common ones.
* The freely given service of leaders, catechists and other collaborators in the oratories and youth centres and in Salesian parishes. Some of these provide a full time service while others a regular but intermittent service.
* Social voluntary service among the poor.
* Voluntary service in educational contexts.
* Voluntary service of a directly evangelising nature.
* Voluntary service as a specifically vocational form of activity in a Salesian centre.
* Voluntary service as a vocational choice of life, for an unlimited period.
* Group experience, normally outside one’s own environment and for a short time – from two weeks to three months – to carry out a specific project. Often these experiences are carried out in Salesian contexts in developing countries.
* Voluntary service for a considerable length of time (about a year) outside one’s own environment in works in the same Province.
* Voluntary service for a short period of time (three months to a year) or for a longer period (more than a year) in other countries in mission territories entrusted to the Congregation.
* Civilian (social) service supported by the State, that can take the place of military service.
From the variety in this list, to which could be added other experiences, it can be seen that in different parts of the Salesian world, not everyone has the same thing in mind when they speak about “Salesian voluntary service.”
For this reason we feel the need to establish certain criteria for the organisation and the promotion of this rich and promising phenomenon. As Salesians, we want to discover these riches, and recognise the challenges, bearing in mind the current social and ecclesiastical context, within the context of history and of Salesian values.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[SALVO Salesian Lay Volunteers]], [[Cagliero Project]].//
!!!!''SL'' is ''[en]'' (Source Language. Use standard 2-letter codes: my (//Burmese//), km (//Khmer//), zh (//Chinese//), en (//English//), fj (//Fijian//), fr (//French//), el (//Greek//), in (//Indonesian//), it (//Italian//), ja (//Japanese//), ko (//Korean//), lo (//Laotian//), la (//Latin//), ms (//Malay//), sm (//Mongolian//), es (//Spanish//), tl (//Tagalog//), th (//Thai//), vi (//Vietnamese//) or 3-letter in particular cases, e.g. tpi (//Tok Pisin//). <br>
''TL'' is ''[en]'' (Target Language, as above) <br>''Glossed as:'' VSDB The Visitation Sisters of Don Bosco.
!!!''Definition:'' (if a precise one exists)
A religious Congregation of Diocesan Right
!!!''Synonyms:''
!!!''Comment:'' (other grammatical, etymological, geographical, usage ... info)
Founder: Bishop Hubert D'Rosario SDB (1919-1994), Bishop of Shillong (1969-1994).
Date of foundation: 31 May 1983.
!!!''Usage notes''
!!!''Linguistic notes:'' (part of speech, other lexical or inflectional features that may be of interest)
!!!''Citation''
<br>
<!-- DO NOT EDIT BELOW THIS LINE -->
See also: //<<comma-links filter:"[<currentTiddler>backlinks[]]">>
<!-- DO NOT EDIT ABOVE THIS LINE -->
[[Salesian Family|famiglia salesiana]].//
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>
<!--DO NOT EDIT BELOW THIS LINE-->
<<list-word-gloss filter:"[prefix{!!lower}] [prefix{!!upper}] -[!tag[Dictionary entry]]">>